Java Arraylist.remove删除第一次出现而不是索引,即使我输入了一个int?

时间:2016-10-12 14:20:03

标签: java arraylist

即使我在.remove(int i)中输入了一个int,Arraylist.remove也会删除第一个匹配而不是索引? 让我有一个随机数字的arraylist“数字”,这个例子让我们说{1,3,5,2,4,6}

ArrayList<Integer> numbers = new ArrayList<Integer>();
aList.add(1);
aList.add(3);
aList.add(5);
aList.add(2);
aList.add(4);
aList.add(6);

我想根据他们的索引删除所有奇数。我创建了另一个包含索引的Arraylist:

int origSize = numbers.size();
for (int i = 0; i < origSize; i++) {
            if (numbers.get(i) % 2 != 0) {
                numbers.add(numbers.get(i));
                remover.add(i);
            } 

出于某种原因,当我使用.remove函数根据索引删除元素时,它会删除第一个匹配项。 我的语法是正确的,或者我正在做.remove(int i):

        for (int i = (remover.size() - 1); i>=0; i--) {
            numbers.remove(remover.get(i));
        }

在我的示例中,5出现在索引2处。但是运行.remove(remover.get(i)),应该是.remove(2)删除第一次出现的2 ... 最终,我得到{3,5,4,6},因为它删除了2,1和0而不是那些索引。为什么会这样?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:5)

如果您有List<Integer>,如果要拨打remove(int index),则需要传递int。如果您想致电remove(Object o),则需要传递IntegerInteger继承自Objectint没有。

如果您发现自己拨错了,请使用intIntegernumbers.remove((int) ...)投放到numbers.remove((Integer) ...),反之亦然。