检查一个 List<String> 是否包含另一列表中的特定字符串

Raf*_*ing -2 java collections arraylist java-stream

我有一封List<String> emails包含电子邮件,长度为n,另一个List<String> keywords包含关键字,长度相同。这些列表应满足以下条件: 对于每个索引i emails.get(i).contains(keywords.get(i))

所以,如果emails.get(0) == "quick brown fox",那么keywords.get(0) == "fox"

如果emails.get(5) == "foo bar",那么keywords.get(5) == "foo"

如何检查(除了for循环之外)每封电子邮件都包含关键字?

Ale*_*nko 6

首先,可能需要检查两个列表的大小,然后比较相应的列表项,IntStream应使用:

public static boolean allKeywordsFound(List<String> emails, List<String> keywords) {
    return emails.size() == keywords.size() &&
        IntStream.range(0, emails.size())
            .allMatch(i -> emails.get(i).contains(keywords.get(i)));
}
Run Code Online (Sandbox Code Playgroud)