从列表中适当地移除整数< Integer> [英] Properly removing an Integer from a List<Integer>

查看:251
本文介绍了从列表中适当地移除整数< Integer>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Here's a nice pitfall I just encountered. Consider a list of integers:

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



< ? list.remove(new Integer(1))?这可能会导致一些讨厌的错误。

Any educated guess on what happens when you execute list.remove(1)? What about list.remove(new Integer(1))? This can cause some nasty bugs.

区分remove(int index) ,它从给定的索引中删除一个元素和 remove(Object o) ,它在处理整数列表时会通过引用删除一个元素?

What is the proper way to differentiate between remove(int index), which removes an element from given index and remove(Object o), which removes an element by reference, when dealing with lists of integers?

这里要考虑的主要问题是

The main point to consider here is the one @Nikita mentioned - exact parameter matching takes precedence over auto-boxing.

推荐答案

Java总是调用自动加载方法,最适合您的参数。

Java always calls the method that best suits your argument. Auto boxing and implicit upcasting is only performed if there's no method which can be called without casting / auto boxing.

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

The List interface specifies two remove methods (please note the naming of the arguments):


  • remove(Object o)

  • remove(int index)

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

code> list.remove(1)删除位置1处的对象, remove(new Integer(1))从此列表中指定的元素。

That means that list.remove(1) removes the object at position 1 and remove(new Integer(1)) removes the first occurrence of the specified element from this list.

这篇关于从列表中适当地移除整数&lt; Integer&gt;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆