我有一个测验计划,但是一小部分不起作用。基本上,我有一个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 !!
答案 0 :(得分:5)
从此列表中删除指定元素的第一个匹配项(如果存在)。如果列表不包含该元素,则不会更改。更正式地,删除具有最低索引
i
的元素,使(o==null ? get(i)==null : o.equals(get(i)))
(如果存在这样的元素)。如果此列表包含指定的元素,则返回true
(或等效地,如果此列表因调用而更改)。
删除此列表中指定位置的元素。将任何后续元素向左移位(从索引中减去一个)。
您使用第一种方法,但您可以轻松更改它:
Questions.remove(indexAt.get(i).intValue());
但您还订购了indexAt
降序。