-1

配列リスト 2 から利用可能な配列リスト 1 の要素を削除する方法は?

例えば

ArrayList<AClass> list1 = new ArrayList<AClass>(); //AClass(int IDNumber, String date)
ArrayList<Integer> list2 = new ArrayList<Integer>();

AClass a1 = new AClass(1, "20/01/2013");
AClass a2 = new AClass(2, "21/01/2013");
AClass a3 = new AClass(3, "22/01/2013");
AClass a4 = new AClass(4, "23/01/2013");

list1.add(a1);
list1.add(a2);
list1.add(a3);
list1.add(a4);

list2.add(2);
list2.add(4);

//remove 2 and 4 from list1,

リストのサイズは大きくなります。それらを削除する方法やアルゴリズムはありますか。

私は答えを期待しています

// after removing Im expecting answer from list1 as
[1,22/01/2013]
[3,22/01/2013]
4

1 に答える 1

2

HashSet<Integer>ではなく aを使用しList<Integer>、 を反復してlist1、 に含まれる num を持つすべての要素を削除しますSet<Integer>

for (Iterator<AClass> it = list1.iterator(); it.hasNext(); ) {
    AClass c = it.next();
    if (set.contains(c.getNum())) {
        it.remove();
    }
}

HashSet ルックアップは O(1) ですが、リスト ルックアップは O(N) です。

于 2013-07-15T21:29:16.993 に答える