-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

使用 aHashSet<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),而 List 查找是 O(N)。

于 2013-07-15T21:29:16.993 回答