列表包含来自另一个列表的至少一个值(Java 8)

时间:2017-01-29 12:23:47

标签: java lambda java-8 java-stream

我的函数从列表中的给定单词列表中查找一个单词在页面中是否有效。 因此,当页面包含单词时,我将其编写如下: (简化版)

private boolean atLeastOneWordIsValidInThePage(Page page, Set<Long>  wordIdsToCheck) 
    Set<Long> wordIds = page.getWords().stream()
                .filter(word -> word.isValid())
                .map(word->getWordId())
                .collect(Collectors.toSet());
return words.stream().anyMatch((o) -> wordIds.contains(o));

编写它是最好的java 8练习吗? 我想在找到第一场比赛时停止搜索。

1 个答案:

答案 0 :(得分:3)

无需打开两个单独的流。您应该能够将anyMatch直接链接到map函数,如下所示:

return page.getWords().stream()
            .filter(word -> word.isValid())
            .map(word->getWordId())
            .anyMatch((o) -> words.contains(o));