【问题标题】:How to specify which method Java use?如何指定 Java 使用哪种方法?
【发布时间】:2013-03-06 08:26:08
【问题描述】:

现在我有一个ArrayList<Integer>。
正如this 所说,ArrayList 有两种删除方法。
假设我有一个整数 2,我想删除该列表中的 ELEMENT 2 而不是 POSITION 2 上的元素(第三个元素),我应该如何告诉 Java 这样做?

【问题讨论】:

  • 您可能会使用int 按索引删除,使用Integer 删除值。真正的问题是,你尝试过什么
  • 我尝试过仅使用原始整数使用 ArrayList.remove,编译器会将其解释为使用 remove(Object o)。我的错,我应该补充这个细节。
  • @Patashu:感谢您的编辑!我忘了添加 部分,这肯定会引起一些混乱。

标签: java list integer


【解决方案1】:

您应该使用public boolean remove(Object o) 方法从列表中删除对象。在您的情况下,您应该将声明写为this.remove(new Integer(2));

【讨论】:

    【解决方案2】:

    这是与autoboxing 相关的问题。其实T == Integer的时候,你有两个remove方法:

    • void remove(int index)
    • void remove(Integer object)

    只需强制编译器通过将其转换为Integer 或直接使用Integer 来选择适当的、基于对象的版本:

    list.remove((Integer)2);
    list.remove(Integer.valueOf(2));
    

    【讨论】:

    • 很好的答案。我想知道你为什么编辑掉 (new Integer(2)) 选项..这不起作用吗?
    • (Integer)2 和 Integer.valueOf(2) 都是 Integer,而不是 int。 list.remove method 有什么区别。
    • @octref:这只是口味问题。我通常使用new Integer(..),但两者是相等的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2011-01-22
    相关资源
    最近更新 更多