qq_35883107
2018-04-23 07:05
采纳率: 66.7%
浏览 3.3k
已采纳

两个List集合 合并问题

有两个集合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中

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • loyal2shrin 2018-04-23 07:23
    已采纳

    创建一个hashmap(key不可重复)
    先将b按照id作为key插入,然后将a按照id作为key插入;
    a中id与b中id一样的,会覆盖之前的数据;
    最后得到的hashmap转为list即可

    点赞 评论
  • _亮仔 2018-04-23 07:36

    需要结果C中没有相同的元素的话可以用Set

    点赞 评论
  • zhangcx1994 2018-04-23 07:39
    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]
    
    点赞 评论
  • _亮仔 2018-04-23 07:51

    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());
    }
    
        //结果  [李四, 张三, 王五]
    
    点赞 评论
  • 你好杰米 2018-04-23 07:56

    新建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

    点赞 评论
  • 一抹蓝2 2018-04-23 08:04

    拿着迭代的逻辑就是 重写 user的equers 和 hashcode 方法 如何在循环判断对象是否相等 在去处理。。。。

    点赞 评论
  • shanweilong 2018-04-23 09:01

    重写user的equers,即俩个对象hashcode或者id一致

    点赞 评论
  • Danny_idea 2018-04-23 15:55

    将两个list集合里面的内容导入进hashSet

    点赞 评论

相关推荐 更多相似问题