Java ArrayList中Remove方法的二义性

Hao*_*hen 5 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. 
Run Code Online (Sandbox Code Playgroud)

但是,存在重载不起作用的情况。

ArrayList<Integer> numbers = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)

数字。添加(1);数字。添加(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)
Run Code Online (Sandbox Code Playgroud)

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

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

Kon*_*Kon 6

你需要使用一个Integer对象。

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