######碰巧用到了
public class Test {
public static void main(String[] args) {
List list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
List list2=new ArrayList();
list2.add(2);
list2.add(4);
list2.add(6);
List<Integer> list1Cha = list1.stream().filter(item -> list2.stream().noneMatch(item2 -> Objects.equals(item, item2))).collect(Collectors.toList());
List<Integer> list2Cha = list2.stream().filter(item -> list1.stream().noneMatch(item2 -> Objects.equals(item, item2))).collect(Collectors.toList());
System.out.println(list1Cha);
System.out.println(list2Cha);
List<Integer> heList = list1.stream().filter(item -> list2.stream().anyMatch(item2 -> Objects.equals(item, item2))).collect(Collectors.toList());
System.out.println(heList);
list1.addAll(list2);
System.out.println(list1);
list1.removeAll(list2);
System.out.println(list1);
}
}
勿粘贴截图
list3.addAll(list1);
list1.removeAll(list2);
System.out.println(list1);
list2.removeAll(list3);
System.out.println(list2);
boolean b = list1.equals(list1Cha);
System.out.println(b);
一、我有些问题:
1.集合中元素为同一元素的判定条件是什么?值相等?是同一个对象?
2.集合和列表的区别是否清晰?集合:元素没有相同的元素;列表:允许有相同的元素。
二、解释list的removeAll()与addAll()与list.stream()求两个集合差集与和集的区别
1.list 的list1.removeAll(list2),从list1中删除所有在list2中存在的元素
2.list 的list2.addAll(list2),自list1尾部添加list2中的所有元素,不会验证是否存在相同的元素
3.通过代码实现符合你对该计算的理解,如果逻辑正确,符合你对集合计算的理解
4.如果想使用集合计算,并不想自己写代码可以考虑Set接口的实现类
addall是不管重复的,直接拼接在一起, 求合集会自动去掉重复项
removeall的时候如果里面没有,不知道会不会报错,但是求差集的时候即使没有也不会报错
多看看源码就清楚了