从arrayList1中删除arraylist2中可用的元素

时间:2013-07-15 21:24:47

标签: java arraylist

如何从数组列表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]

1 个答案:

答案 0 :(得分:2)

使用HashSet<Integer>而不是List<Integer>,然后遍历list1,并删除Set<Integer>中包含num的每个元素:

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)。