通常,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)
所以看起来在删除数字时,我无法删除具有特定值的元素。因为计算机会将所有整数值视为索引,而不是元素的值。
这是一个微妙的错误。有没有其他简单的方法来删除具有特定整数值的元素?
答案 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)