【问题标题】:Clarification of remove for Arraylist澄清 Arraylist 的删除
【发布时间】:2019-12-18 08:25:00
【问题描述】:

所以 JAVA 中的 ArrayList 有 2 个删除函数,1 个返回旧值,另一个返回布尔值。

remove(Object) return boolean
remove(index) return oldvalue

现在如果两个对象也是整数,那么 JAVA 是如何区分的

例如:- 在代码arr.remove(j);

代码

ArrayList<Integer> arr = new ArrayList<Integer>();
for (int i = 2; i < 239697453; i++) {
    arr.add(i);
}
int a = arr.size();
for (int i = 2; i < a; i++) {
    for (int j = 0 j < a; j++) {
        if (arr.get(j) % i == 0) {
            arr.remove(j);
        }
    }
}

【问题讨论】:

  • j 不是Integer,而是int
  • 区分基于原始 int,这意味着它是一个索引,而包装器是一个对象,因此 remove 是实际删除当前对象。

标签: java arraylist


【解决方案1】:

Java 首先会选择最合适的方法版本——因为

remove(int i)

更合适
remove(Integer i) // autoboxing necessary

它将调用 index 版本的remove 方法

要强制 Java 使用 item 版本,您可以使用 Integer.valueOf() 创建 Integer 对象并将其传递给 remove 方法

list.remove(Integer.valueOf(myInt))

查看相关页面,What is the difference between Integer and int in Java?

【讨论】:

    猜你喜欢
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2020-07-30
    • 2020-04-02
    相关资源
    最近更新 更多