如何查找列表中的所有元素是否都在Java 8中的集合中?

时间:2018-05-18 18:47:24

标签: java list java-8 set set-intersection

虽然在for循环中很容易做到这一点,但在Java-8中是否有办法查找列表L中的所有元素是否都存在于集合s中?

3 个答案:

答案 0 :(得分:12)

当您可以使用Set#containsAll时,无需使用<%= yield :header_tags -%>

Stream

输出:

var set = Set.of(1, 2, 3, 4, 5);
var list = List.of(2, 3, 4);

System.out.println(set.containsAll(list));

答案 1 :(得分:6)

您可以使用allMatch

boolean result = l.stream().allMatch(s::contains);

答案 2 :(得分:0)

long commonElements = l.stream().filter(s::contains).count();
if (commonElements == l.size()) {
    //do something
}

集合很好,因为它们是为这种事物而构建的:检查项目是否已经存在。列表在这种做法上并不擅长,但有利于快速遍历。因此,您希望遍历列表并将每个元素与集合进行比较,而不是相反。

Streams是一个很好的资源,用于执行内联操作,而不是明确地解决问题。

编辑:@Aomine的回答比我的好

boolean result = myList.stream().allMatch(mySet::contains);