虽然在for循环中很容易做到这一点,但在Java-8中是否有办法查找列表L
中的所有元素是否都存在于集合s
中?
答案 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);