如何查找列表的所有元素是否在 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
虽然在 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