lista desdobramento das palavras usando fluxos em Java

Hermann aço:

Estou tendo este método que leva um número de listas, que contêm linhas de livros. Eu estou penteando-os para um fluxo para, em seguida, iterar sobre eles para Split em todos os não-carta de \\P{L}.

Existe uma maneira de evitar o loop for-each e processar esta dentro de um fluxo?

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;
}
Andronicus:

Tendo fluxo, você pode simplesmente " flatMap" mais e retornar o resultado:

return combinedStream
        .flatMap(str -> Arrays.stream(str.split("\\P{L}")))
        .collect(Collectors.toList());

Para colocá-lo completamente:

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

Acho que você gosta

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