Executar várias operações não relacionadas nos elementos de um único fluxo em Java
Como posso executar várias operações não relacionadas nos elementos de um único fluxo?
Diga que eu tenho umList<String>
composto a partir de um texto. Cada sequência na lista pode ou não conter uma determinada palavra, o que representa uma ação a ser executada. Digamos que:
List<String>
com todas as substringsClaro, eu poderia fazer algo assim:
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());
mas a lista seria percorrida duas vezes, o que poderia resultar em uma penalidade de desempenho sestrs
continha muitos elementos.
É possível, de alguma forma, executar essas duas operações sem percorrer duas vezes a lista?