牛骨文教育服务平台(让学习变的简单)
博文笔记

java for循环iterator的区别(reomve)

创建时间:2017-05-11 投稿人: 浏览次数:346

记录一下前一段时间写代码出现的一个问题。我循环一个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();
     }
 }

这样就好了。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。