10

我需要从整数数组列表中删除整数。我对字符串和其他对象没有问题。但是当我删除时,整数被视为索引而不是对象。

List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(300);
list.remove(300);

当我尝试删除 300 时,我得到: 06-11 06:05:48.576: E/AndroidRuntime(856): java.lang.IndexOutOfBoundsException: Invalid index 300, size is 3

4

5 回答 5

28

这是正常的,列表方法有两个版本.remove():一个将整数作为参数并删除该索引处的条目,另一个将泛型类型作为参数(在运行时是一个Object)和将其从列表中删除。

方法的查找机制总是首先选择更具体的方法......

你需要:

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

为了调用正确版本的.remove().

于 2013-06-11T06:14:25.637 回答
11

使用 indexof 查找项目的索引。

list.remove(list.indexOf(300));
于 2013-06-11T06:14:41.420 回答
5

尝试(传递Integer, 对象,而不是int, 原语) -

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

调用正确的方法 -List.remove(Object o)

于 2013-06-11T06:14:17.147 回答
2

请尝试以下代码从列表中删除整数,

public static void main(String[] args) {
        List<Integer> lIntegers = new ArrayList<Integer>();
        lIntegers.add(1);
        lIntegers.add(2);
        lIntegers.add(300);
        lIntegers.remove(new Integer(300));
        System.out.println("TestClass.main()"+lIntegers);
}

如果您通过传递原语来删除项目,那么它将把它作为索引而不是值/对象

于 2013-06-11T06:17:37.673 回答
1
Use list.remove((Integer)300);
于 2013-06-11T06:15:37.783 回答