java for循环iterator的区别(reomve)

来源:互联网 发布:淘宝直通车出价公式 编辑:程序博客网 时间:2024/06/05 17:47

记录一下前一段时间写代码出现的一个问题。我循环一个jsonArray,为空的字段,删除掉,我一开始用的是for循环,发现删除有问题,就去百度了下,说是用迭代器(iterator),今天有空,就看了下,才发现二者的区别的。

List l = new ArrayList();l.add("");l.add("aa");l.add("bb");for(int i = 0;i < l.size(); i++){    Object data = l.get(i);    if(data == null){        l.remove(i);    }}

这样写循环的话,就有问题。因为第一个键值为空,所以删除下标为零的数据。然后整个list前移,下次循环i=1,然后就直接到bb了,aa就跳过去了。

正确的写法应该使用迭代器(iterator)

List l = new ArrayList();l.add("");l.add("aa");l.add("bb");Iterator iter = l.iterator();while(iter.hasNext()){     Object str = (Object) iter.next();     if(str == null){         iter.remove();     } }

这样就好了。

0 0