假如一个list集合是list1:{"12345","4567","5879"},另一个list2:{"9","4"}
要求list1里面每一个元素如何包含list2里面的任何一个元素,则返回true,如果list1里面有元素不含list2中任何一个则返回fasle,如何使用stream来完成
public static void main(String[] args) {
List<String> list1 = new ArrayList<>();
list1.add("12345");
list1.add("4567");
list1.add("5879");
List<String> list2 = new ArrayList<>();
list2.add("9");
list2.add("4");
boolean b = list1.stream().allMatch(item -> list2.stream().anyMatch(item::contains));
System.out.println(b);
}
采纳下吧
除了stream也可以使用其他方法
System.out.println(list1.stream().filter(x-> list2.stream().filter(y->x.contains(y)).count()<=0 ).count()<=0);
list1.stream().allMatch(item-> list2.stream().anyMatch(item::contains))
List<String> list1 = new ArrayList<>(Arrays.asList(new String[]{"12345","4567","5879"}));
List<String> list2 = new ArrayList<>(Arrays.asList(new String[]{"9","4"}));
//方法1
boolean b = list1.stream().allMatch(v -> !list2.stream().allMatch(v::contains));
System.out.println(b);
//方法二
boolean present = list1.parallelStream().filter(v -> {
for (String s : list2) {
if(!v.contains(s)) return true;
}
return false;
}).findAny().isPresent();
System.out.println(present);
方法1里面注意里面 取反