0

複数Integer ArrayListの があり、いくつかの重複要素が含まれています。それらから独自の要素を取得したい。しかし、どのように?
java.util.ArrayList.removeAll()私の目的を完全に果たしていません。以下のテストコードを参照してください-

ArrayList<Integer> d = new ArrayList<Integer>();
d.add(2);
d.add(4);
d.add(5);
d.add(7);
d.add(8);
d.add(9);

ArrayList<Integer> e = new ArrayList<Integer>();
e.add(3);
e.add(7);

d.removeAll(e);

for (int t : d) {
    System.out.print(t+", ");
}

出力では、私は取得して2, 4, 5, 8, 9,います。明らか3に欠けています。また、簡単にするために、ArrayListここでは 2 つしか使用していませんが、コードには 2 つ以上ありArrayListます。

Javaで複数のArrayListで一意の要素を見つける方法

4

6 に答える 6

3

から を作成Set<Integer>しますList<Integer>。セットには重複するオブジェクトは含まれません:

List<Integer> lstNumbers = new ArrayList<Integer>();
//fill the list of integers...
Set<Integer> setNumbers = new HashSet<Integer>(lstNumbers);
//the set will contain no duplicate values...
for (int t : setNumbers) {
    System.out.print(t+", ");
}

メソッドを使用してList<Integer>(rahulrocの回答に示されているように)さらに追加して、重複していない要素コレクションに整数を追加できることに注意してください。SetSet#addAll

//assuming setNumbers has been initialized before
setNumbers.addAll(anotherListOfNumbers);
setNumbers.addAll(andAnotherListOfNumbers);

また、ベスト プラクティスとして、クラスの実装 (ArrayList、HashSet) ではなく、インターフェース (List、Set など) に対してプログラミングするようにしてください。

于 2012-12-08T13:18:07.367 に答える
2

使用するjava.util.HashSet

Set<Integer> uniqueEntries = new HashSet<Integer>();
for(all lists)
     uniqueEntries.addAll(list);

これで、uniqueEntries のセットにはすべての一意の整数値が含まれます。

于 2012-12-08T13:21:24.860 に答える
2

使用するSet

ArrayList<Integer> d = new ArrayList<Integer>();
d.add(2);
d.add(4);
d.add(5);
d.add(7);
d.add(8);
d.add(9);

d.add(3);
d.add(7);

// this will remove all duplicates
Set setNew = new HashSet(d);

System.out.print(setNew);

デモ

于 2012-12-08T13:26:53.917 に答える