java for循环iterator的区别(reomve)
记录一下前一段时间写代码出现的一个问题。我循环一个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();
}
}
这样就好了。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。