一尘不染

Java从列表<Integer>正确删除一个整数

java

这是我刚遇到的一个陷阱。考虑一个整数列表:

List<Integer> list = new ArrayList<Integer>();
list.add(5);
list.add(6);
list.add(7);
list.add(1);

关于执行时会发生什么的任何有根据的猜测list.remove(1)?list.remove(new Integer(1))呢 这可能会导致一些讨厌的错误。

在处理整数列表时,区分remove(int index)从给定索引remove(Object o)中删除元素的和,按引用删除元素的正确方法是什么?

这里要考虑的重点是提到的@Nikita-精确参数匹配优先于自动装箱。


阅读 980

收藏
2020-02-29

共1个答案

一尘不染

Java总是调用最适合你的参数的方法。仅在没有不使用强制转换/自动装箱方法就无法调用的方法的情况下,才执行自动装箱和隐式向上转换。

List接口指定两个remove方法(请注意参数的命名):

  • remove(Object o)
  • remove(int index)

这意味着list.remove(1)删除位置1的对象,并remove(new Integer(1))从该列表中删除指定元素的首次出现。

2020-02-29