Java链接列表删除对象方法

时间:2013-12-16 16:56:58

标签: java linked-list

我想删除元素,如果它在一个链表中存在,同时迭代一个数字数组

for(int num : numbers)
{
   if(l.contains(num))
   {
      l.remove(num);
   }
}

但是,它试图删除索引号为num的元素,而不是在链表中查找num。

javadoc有这个方法

remove(Object o)
Removes the first occurrence of the specified element from this list, if it is present.

如何使用它?

4 个答案:

答案 0 :(得分:5)

你可以这样做

for(Integer num : numbers)
    l.remove(num); // remove if present

如果你传递一个int 和List.remove(Object),如果你传递一个像Integer这样的对象,这就避免了与List.remove(int index)的混淆。如果元素存在,则避免扫描列表两次。

答案 1 :(得分:1)

你应该像Integer一样将它装箱:

l.remove(Integer.valueOf(num));

或迭代Integer个对象而不是int s。

答案 2 :(得分:1)

我只想这样做:

l.removeAll(Arrays.asList(numbers));

答案 3 :(得分:0)

您需要调用remove(Object)remove(num)的调用与签名remove(Object o)的函数不匹配,其中函数参数是引用类型。相反,它与remove(int index)匹配。

因此,调用remove(Integer.valueOf(num))将起作用,因为它将传递引用类型。