ArrayList删除方法

时间:2014-05-22 05:06:29

标签: java arraylist

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中仍然有零?????

1 个答案:

答案 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();
  }
}