¿Es ineficaz Collection.stream (). filter (). forEach () en comparación con un estándar para cada ciclo?

13

IntelliJ IDEA me recomendó que reemplace el siguiente bucle for-each con una llamada "forEach" de Java 8:

    for (Object o : objects) {
        if (o instanceof SomeObject) {
            doSomething();
        }
    }

A la llamada recomendada le gustaría esto:

objects.stream().filter(o -> o instanceof SomeObject).forEach(o -> doSomething());

A menos que no entienda bien cómo funciona la funcionalidad subyacente de Stream, me parece que usar stream es una operación O (2n) en lugar de una operación O (n) para el estándar para cada bucle.

    
pregunta agent154 07.05.2015 - 15:38

1 respuesta

18

Las secuencias de Java no se repiten en tu colección una vez por cada declaración, a pesar de lo que implica la sintaxis. Aplica la cadena completa a cada elemento, un elemento a la vez.

En su caso, el flujo operaría exactamente igual que el bucle. Tome un elemento, verifíquelo con su predicado y luego aplique su operación, luego continúe con el siguiente elemento.

    
respondido por el Rosa Richter 07.05.2015 - 16:53

Lea otras preguntas en las etiquetas