Lista de división de palabras a partir de las corrientes en Java

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());
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=182617&siteId=1
Recomendado
Clasificación