Java ArrayList中Remove方法的歧义

时间:2015-03-17 04:50:07

标签: java arraylist

通常,Java中ArrayList的remove方法的用法如下所示:

ArrayList<String> list = new ArrayList<String>();
list.add("abc");
list.add("efg");

list.remove(1);   //Removing the second element in ArrayList.
list.remove("abc");  //Removing the element with the value "abc" in ArrayList. 

但是,存在超载无法工作的情况。

ArrayList<Integer> numbers = new ArrayList<Integer>();

numbers.add(1);    numbers.add(2); 当我试图删除值为2的元素时,它给了我错误:

java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
    at java.util.ArrayList.RangeCheck(ArrayList.java:547)
    at java.util.ArrayList.remove(ArrayList.java:387)

所以看起来在删除数字时,我无法删除具有特定值的元素。因为计算机会将所有整数值视为索引,而不是元素的值。

这是一个微妙的错误。有没有其他简单的方法来删除具有特定整数值的元素?

2 个答案:

答案 0 :(得分:3)

您需要使用Integer对象。

    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(10);
    numbers.remove(new Integer(5));
    System.err.println(numbers);
    //Prints [10]

答案 1 :(得分:1)

试试remove(new Integer(1)。这将有效,因为它与remove(Object o)

完全匹配