Java 8 mejorado para bucle con índice/rango




java-8 apache-commons (5)

Aunque el uso de la sublist es mejor, pero la versión de transmisión usa skip and limit :

list.stream().skip(1) .... limit(6)..... 

¿Es posible especificar un índice / rango en bucle mejorado para Java?

Por ejemplo, tengo una lista: List<String> list;

Y quiero ejecutar un bucle for desde el índice 1 en lugar de 0:

for(String s : list(start from index 1))

O hasta el índice 5

for(String s : list(end at index 5))

Sé que puedo usar el bucle for tradicional o mantener un contador dentro del bucle for mejorado, pero quería saber si hay algo fuera de la caja en las colecciones de Java o Apache.


El bucle for tradicional es la solución "lista para usar" para este requisito:

for (int i = 1; i < list.size(); i++) {
    String s = list.get(i);
    ...
}

y (si la List tiene al menos 5 elementos):

for (int i = 0; i < 5; i++) {
    String s = list.get(i);
    ...
}

Es posible con list.subList(1, list.size()) , pero agregará una penalización de rendimiento para la sublistación de la lista. Es mejor usar el bucle tradicional para en este caso.

// Calcule primero el tamaño para evitar la penalización de rendimiento calculando en bucle cada iteración

int size = list.size();

for (int i = 1; i < size; i++) {
    String s = list.get(i);
    ...
}

No estoy seguro de la penalización de rendimiento, pero puede usar List::subList

List<String> list = Arrays.asList("a", "b", "c");

for (String s : list.subList(1, list.size())) {
        System.out.println(s);
}

salida

2
3

Puedes usarlo

for(int i=1 ; i< list.size ; i++){
   String str = list.get(i);
}




apache-commons