有两个集合a和b
a和b的数据不完全相同,但是有部分相同,
如何把ab不相同的部分放进c集合,把相同的部分按a的标准放到c集合中
List c = new ArrayList();
List a = nCew ArrayList();
//存入数据
List b = new ArrayList();
//存入数据
user实体有name和id两个属性
就是a和b集合 id不同的都放入到c集合中,id相同的按a的标准放到c中
创建一个hashmap(key不可重复)
先将b按照id作为key插入,然后将a按照id作为key插入;
a中id与b中id一样的,会覆盖之前的数据;
最后得到的hashmap转为list即可
需要结果C中没有相同的元素的话可以用Set
List b = new ArrayList();
b.add(1);
b.add(2);
List a = new ArrayList();
a.add(2);
a.add(3);
Set set = new HashSet(b);
set.addAll(a);
List c = new ArrayList(set);
//a或b 集合要保证元素不重复
System.out.println(c.toString());
//结果 [1, 2, 3]
public static void main(String[] args) {
List list = new ArrayList<>();
list.add("张三");
list.add("张三");
list.add("李四");
List<String> list2 = new ArrayList<>();
list2.add("张三");
list2.add("王五");
Set<String> set = new HashSet<>(list);
set.addAll(list2);
System.out.println(set.toString());
}
//结果 [李四, 张三, 王五]
新建HashSet
重写User中的hashCode方法
public int hashcode(){
return this.id;
}
重写User中的equals方法
public boolean equals(Object obj){
return true;
}
然后先将你的a集和全部add进HashSet中,然后add集和b的数据进set,最后把set转为list,就是你要的c
拿着迭代的逻辑就是 重写 user的equers 和 hashcode 方法 如何在循环判断对象是否相等 在去处理。。。。
重写user的equers,即俩个对象hashcode或者id一致
将两个list集合里面的内容导入进hashSet