java - 从 List<Integer> 中正确删除 Integer

标签 java collections overloading

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

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 mentioned - 精确参数匹配优先于自动装箱。

最佳答案

Java 总是调用最适合你论点的方法。自动装箱和隐式向上转换仅在没有不进行转换/自动装箱的情况下可以调用的方法时才执行。

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

  • 删除(对象 o)
  • 删除(整数索引)

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

关于java - 从 List<Integer> 中正确删除 Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22750152/

相关文章:

xcode - 尝试重载函数,但是 Xcode 显示错误

Java 正则表达式 : match multiple word boundaries

java - 在java中使用正则表达式与不可打印的字符

c# - WinRT 中的集合导航

java - 将日期排序为字符串 Java

iphone - 如何从类别中的重载函数调用原始函数?

Ruby 没有选择正确的重载方法

java - Apache 汤姆霍克 <t :inputFileUpload> tag not working

java - 我无法在单独的方法中访问我的变量

php - 过滤两个类别的产品集合 Magento 1.7