Java,如何删除ArrayList中的Integer项

Zhe*_*Hao 47 java

假设我有这样一个ArrayList:

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

添加操作后:

list.add(2);
list.add(3);
list.add(5);
list.add(7);
Run Code Online (Sandbox Code Playgroud)

number 2如果我这样做,我想删除

list.remove(2);
Run Code Online (Sandbox Code Playgroud)

然后number 5将被删除,我怎么能删除number 2?并且假设我不知道索引number 2.

Evg*_*eev 82

试试这个

list.removeAll(Arrays.asList(2));
Run Code Online (Sandbox Code Playgroud)

它将删除value = 2的所有元素

你也可以用它

list.remove(Integer.valueOf(2));
Run Code Online (Sandbox Code Playgroud)

但它只会删除2的第一次出现

list.remove(2)不起作用,因为它匹配List.remove(int i)删除具有指定索引的元素


Roh*_*ain 14

方法有两种版本remove():

使用a ArrayList<Integer>,删除整数值2,将其作为索引,因为remove(int)它与此完全匹配.它不会框2Integer,拓宽它.

解决方法是Integer明确获取对象,在这种情况下,扩展将优先于取消装箱:

list.remove(Integer.valueOf(2));
Run Code Online (Sandbox Code Playgroud)


wir*_*d00 9

代替:

list.remove(Integer.valueOf(2));
Run Code Online (Sandbox Code Playgroud)

你当然可以只使用:

list.remove((Integer) 2);
Run Code Online (Sandbox Code Playgroud)

这将转换为 Integer 对象而不是原始对象,然后转换remove()为 Object 而不是 Arraylist Index


bad*_*aly 5

我认为这是您想要的:带有get / remove方法的ArrayList <Integer>

list.remove(new Integer(2));
Run Code Online (Sandbox Code Playgroud)

  • 您应该比构造函数更喜欢Integer.valueOf,因为它使用内部缓存来防止不必要的对象创建。 (4认同)

小智 5

最简单的方法是:

list.remove((Integer)5);
Run Code Online (Sandbox Code Playgroud)

没有不必要的对象创建,只需将 Index 转换为 Integer。奖励:最简单的语法。