private List <Integer> nums;
public void numQuest()
{
int k = 0;
Integer zero = new Integer(0);
while(k < nums.size())
{
if(nums.get(k).equals(zero))
nums.remove(k);
k++
}
}
列表名称包含以下值[0,0,4,2,5,0,3,0]
我执行了numQuest并且nums变成了[0,4,2,5,3],但是有人可以解释为什么吗?
我认为代码删除了所有的零,所以为什么在nums中仍然有零?????
答案 0 :(得分:0)
所有0都不会被删除(这是你的意图)。
第一次迭代后,您的列表将为[0, 4, 2, 5, 0, 3, 0]
。
现在,k=1
。您只能从index = 1的元素4
中查找。
相反,请尝试使用迭代器:
示例:
for (Iterator<String> iter = list.iterator(); iter.hasNext();) {
String s = iter.next();
if (s.equals("to_remove")) {
iter.remove();
}
}