如何从Java中的整数ArrayList中删除特定对象?

时间:2017-12-31 23:25:30

标签: java arraylist

  

这不是重复的!字面上的问题确实如此   之前问过,但问题都没有同样的意图(专注于   int和Integer以及弃用)答案也回答了我的意思   寻找。

我通过StackOverflow看了很多。我一遍又一遍地看到同样的问题和答案,但他们没有解决真正的问题。

有Java。 Java有ArrayListArrayList的方法为remove()。 JDK9文档说它可以将索引作为参数或要删除的对象本身。 以下代码不起作用。

import java.util.*;

public class Tea {
    public static void main (String[] args) {

        ArrayList<Integer> myList = new ArrayList<Integer>();

        myList.add(69);

        myList.remove( ( (int) 69 ) );

        System.out.println(myList);

    }
}

它编译,但它不运行,因此它给出以下错误消息:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 69 out-of-bounds for length 1
    at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
    at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
    at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
    at java.base/java.util.Objects.checkIndex(Objects.java:372)
    at java.base/java.util.ArrayList.remove(ArrayList.java:517)
    at Tea.main(Tea.java:10)

JVM显然将参数作为索引而不是对象。 以下是在其他网站上找到的建议解决方案:

myList.remove(new Integer(69));

它甚至无法编译成字节码:

Note: Tea.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

编译:

$javac Tea.java -Xlint:deprecation

给我们:

warning: [deprecation] Integer(int) in Integer has been deprecated
    myList.remove(new Integer(69));

我查看了文档中已弃用的列表。无法找到它。 查看方法的文档,向我解释。没有解释。

我想要做的就是使用参数作为对象而不是索引,并将我的返回作为布尔值(文档说明),如果它在ArrayList中并且已被删除。

有办法做到这一点吗?或者是否已弃用,我的 Ctrl + F 搜索已弃用的方法还不够?

1 个答案:

答案 0 :(得分:0)

使用Integer演员而不是int

boolean success = myList.remove((Integer) 69);