Hermann acero:
Estoy teniendo este método que toma una serie de listas, que contienen líneas de libros. Los estoy peinando a una corriente a continuación, iterar sobre ellos dividida para todos no sea una letra de \\P{L}
.
¿Hay una manera de evitar el bucle for-each y procesar esta dentro de una corriente?
private List<String> getWordList(List<String>... lists) {
List<String> wordList = new ArrayList<>();
Stream<String> combinedStream = Stream.of(lists)
.flatMap(Collection::stream);
List<String> combinedLists = combinedStream.collect(Collectors.toList());
for (String line: combinedLists) {
wordList.addAll(Arrays.asList(line.split("\\P{L}")));
}
return wordList;
}
Andrónico:
Tener corriente, puede simplemente " flatMap
" más allá y devolver el resultado:
return combinedStream
.flatMap(str -> Arrays.stream(str.split("\\P{L}")))
.collect(Collectors.toList());
Para decirlo del todo:
private List<String> getWordList(List<String>... lists) {
return Stream.of(lists)
.flatMap(Collection::stream)
.flatMap(str -> Arrays.stream(str.split("\\P{L}")))
.collect(Collectors.toList());
}