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

Java 从arrayList1中删除arraylist2中可用的元素,java,arraylist,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 A

如何从数组列表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,
使用哈希集而不是列表,然后遍历list1,并删除集合中包含num的每个元素:


哈希集查找是O1,而列表查找是打开的。

我认为OP试图删除索引2和4处的元素。哈希集不会让他这么做的。他的示例中没有重复的值。没有。他试图删除在num字段中具有第二个集合中的值的元素:如何删除数组列表1中可从数组列表2获得的元素?。顺便说一句,他的例子中没有索引4。事实上,仔细阅读后,他的例子毫无意义,甚至没有编译。他使用了addindex,E item,这提示了我在上面的评论,但你是对的,这可能不是他的意思。@ARRG:它不是索引,它是一个ID号,列表1还有一些列,我没有提到,只是用简单的方式显示它。1,2,3,4是身份证号码。
// after removing Im expecting answer from list1 as
[1,22/01/2013]
[3,22/01/2013]
for (Iterator<AClass> it = list1.iterator(); it.hasNext(); ) {
    AClass c = it.next();
    if (set.contains(c.getNum())) {
        it.remove();
    }
}