Realizar múltiples operaciones no relacionadas en elementos de una sola secuencia en Java
¿Cómo puedo realizar múltiples operaciones no relacionadas en elementos de una sola secuencia?
Digamos que tengo unList<String>
compuesto de un texto. Cada cadena de la lista puede o no contener una palabra determinada, lo que representa una acción a realizar. Digamos que:
List<String>
con todas las subcadenasPor supuesto, podría hacer algo como esto:
List<String> strs = ...;
List<Integer> wordsInStr = strs.stream()
.filter(t -> t.contains("of"))
.map(t -> t.split(" ").length)
.collect(Collectors.toList());
List<String> linePortionAfterFor = strs.stream()
.filter(t -> t.contains("for"))
.map(t -> t.substring(t.indexOf("for")))
.collect(Collectors.toList());
pero luego la lista se atravesaría dos veces, lo que podría resultar en una penalización de rendimiento sistrs
contenía muchos elementos.
¿Es posible ejecutar de alguna manera esas dos operaciones sin atravesar dos veces la lista?