如何合并两个没有重复的ArrayLists?

时间:2013-05-13 10:37:51

标签: java arraylist

我有两个数组列表

ArrayList one = {A, B, C, D, E}
ArrayList two = {B, D, F, G}  

我希望得到我的最终ArrayList,其中<​​strong> All 元素是一个元素,而元素只有两个而不是一个元素。

所以 ArrayList final = {A,B,C,D,E,F,G}。

我该怎么做?

4 个答案:

答案 0 :(得分:49)

或者:

Set<Foo> fooSet = new LinkedHashSet<>(one);
fooSet.addAll(two);
List<Foo> finalFoo = new ArrayList<>(fooSet);

List<Foo> twoCopy = new ArrayList<>(two);
twoCopy.removeAll(one);
one.addAll(twoCopy);

答案 1 :(得分:34)

for (Object x : two){
   if (!one.contains(x))
      one.add(x);
}

假设您不想使用评论中建议的集合。如果您正在寻找比这更漂亮的东西,请澄清您的问题。

答案 2 :(得分:2)

你可以这样做:

ArrayList<Object> result = new ArrayList<>();
result.addAll(one);

for(Object e: two){
    if(!result.contains(e))
        result.add(e);
}

答案 3 :(得分:2)

试试这种事。由于Set不允许重复,因此您只能添加更改

ArrayList<String> a=new ArrayList<>();
a.add("a");
a.add("b");
ArrayList<String> b=new ArrayList<>();
a.add("a");
a.add("c");
Set<String> s=new HashSet<String>();
s.addAll(a);
s.addAll(b);
a=new ArrayList<>(s);
for(String r:a){
    System.out.println(r);
}