38

私は2つのarrayListsを持っています

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

1つのすべての要素と、1つではなく2つだけの要素を 持つ最終的なArrayListが必要です。

したがって、ArrayList final = {A、B、C、D、E、F、G} です。

これどうやってするの?

4

4 に答える 4

66

また:

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);
于 2013-05-13T10:47:11.383 に答える
52
for (Object x : two){
   if (!one.contains(x))
      one.add(x);
}

コメントで提案されたセットを使用したくないと仮定します。これよりも凝ったものを探している場合は、質問を明確にしてください。

于 2013-05-13T10:41:46.887 に答える
4

このようなことを試してみてください。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);
}
于 2013-05-13T10:45:14.580 に答える
3

次のようなことができます:

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

for(Object e: two){
    if(!result.contains(e))
        result.add(e);
}
于 2013-05-13T10:42:40.253 に答える