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

How to find if all elements of list are in a set in Java 8?

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

是的。

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

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

Streams 是一个很好的资源,用于执行内联操作与显式分解操作。

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

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

您可以使用 allMatch:

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

当您可以使用 Set#containsAll:

时,无需为此使用 Stream
var set = Set.of(1, 2, 3, 4, 5);
var list = List.of(2, 3, 4);

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

输出:

true