Java ArrayList.remove()不起作用?

时间:2015-12-26 16:41:42

标签: java arraylist

我有一个测验计划,但是一小部分不起作用。基本上,我有一个ArrayList<Object>,它包含10个(或更多,无关紧要)问题对象,我稍后可以参考。

无论如何,当我想使用ArrayList.remove(index)时,它并不会删除该对象!老实说,我不知道该怎么做。

(Key Search是另一个接受字符串(key)的类,并在测验arraylist中搜索它。它返回一个不包含关键字的问题的arraylist,因此让我从整个问题数组中删除它们。)

        ArrayList<Integer> indexAt = new ArrayList();
        indexAt = keyWord.indexAt(); //returning the questions that need to be removed
        System.out.println("(1) Number of Questions: " + Questions.size()); //debugging
        for(int i = 0; i < indexAt.size(); i++)
        {

            Questions.remove(indexAt.get(i));

        }

        //prints out the questions that were removed (for my own reasoning)
        for(int i = 0; i < indexAt.size(); i++)
        {

            System.out.println(indexAt.get(i));
        }

        System.out.println("(2) Number of Questions: " + Questions.size()); //debugging

        Sorting sort = new Sorting(Questions);

输出如下:

(1)问题数量:10

1

2

3

4

6

(2)问题数量:10

它应该删除索引1,2,3,4,6 !!

1 个答案:

答案 0 :(得分:5)

请参阅ArrayList#remove(Object)

  

从此列表中删除指定元素的第一个匹配项(如果存在)。如果列表不包含该元素,则不会更改。更正式地,删除具有最低索引i的元素,使(o==null ? get(i)==null : o.equals(get(i)))(如果存在这样的元素)。如果此列表包含指定的元素,则返回true(或等效地,如果此列表因调用而更改)。

ArrayList#remove(int)

  

删除此列表中指定位置的元素。将任何后续元素向左移位(从索引中减去一个)。

您使用第一种方法,但您可以轻松更改它:

Questions.remove(indexAt.get(i).intValue());

但您还订购了indexAt降序。