当前位置: 代码迷 >> J2EE >> 两个List去重合并的有关问题
  详细解决方案

两个List去重合并的有关问题

热度:8   发布时间:2016-04-17 23:45:33.0
两个List去重合并的问题
样例:
    List a = new ArrayList();
    a.add(new Object[] { "a", "b" });
    a.add(new Object[] { "a", "c" });
    a.add(new Object[] { "a" });
    List b = new ArrayList();
    b.add(new Object[] { "a" });
    b.add(new Object[] { "a", "b" });
    b.add(new Object[] { "b" });
    b.add(new Object[] { "a", "c" });
结果:
a和b去重合并得到的  List   c  里边的元素是new Object[] { "a", "b" },new Object[] { "a", "c" },new Object[] { "a" },new Object[] { "b" }
------解决方案--------------------
你只有自己写方法实现了.两个for循环套用,并挨个对比找出重复的删掉,然后合并list
------解决方案--------------------
a.removeAll(b);
a.addAll(b);
------解决方案--------------------
引用:
Quote: 引用:

a.removeAll(b);
a.addAll(b);

===========================

这样是不行的,结果C里边是7个

抱歉,我错了,new Object[]{"a"} 的hashcode 不等于 new Object[]{"b"}
转换成字符串觉得可以吗
      List a = new ArrayList();

        a.add("a,b");
        a.add("a,c");
        a.add("a");
        List b = new ArrayList();
        b.add("a");
        b.add("a,b");
        b.add("b");
        b.add("a,c");
        b.removeAll(a);
        b.addAll(a);
        System.out.println(b);

然后再转回去,也是有一点麻烦,但代码会整洁一些。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

a.removeAll(b);
a.addAll(b);

===========================

这样是不行的,结果C里边是7个

抱歉,我错了,new Object[]{"a"} 的hashcode 不等于 new Object[]{"b"}
转换成字符串觉得可以吗
      List a = new ArrayList();

        a.add("a,b");
        a.add("a,c");
        a.add("a");
        List b = new ArrayList();
        b.add("a");
        b.add("a,b");
        b.add("b");
        b.add("a,c");
        b.removeAll(a);
        b.addAll(a);
        System.out.println(b);

然后再转回去,也是有一点麻烦,但代码会整洁一些。

纠正:new Object[]{"a"} 的hashcode 不等于 new Object[]{"a"}.
  相关解决方案