Java中iterator迭代器_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java中iterator迭代器

Java中iterator迭代器

 2018/10/11 15:37:30  andrew7676  程序员俱乐部  我要评论(0)
  • 摘要:1.Java中iterator迭代器迭代器(Iterator)是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而又不必暴露该对象内部细节的方法。通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。迭代器的使用主要有以下三个方面的注意事项:1)使用容器的iterator()方法返回一个Iterator,然后通过Iterator的next()方法返回第一个元素
  • 标签:Java
1. Java中iterator迭代器
class="java">
迭代器(Iterator)是一个对象,它的工作是遍历并选择序列中的对象,它提供了一种访问一个容器(container)对象中的各个元素,而又不必暴露该对象内部细节的方法。
通过迭代器,开发人员不需要了解容器底层的结构,就可以实现对容器的遍历。由于创建迭代器的代价小,因此迭代器通常被称为轻量级的容器。

迭代器的使用主要有以下三个方面的注意事项:
1) 使用容器的iterator()方法返回一个Iterator,然后通过Iterator的next()方法返回第一个元素。
2) 使用Iterator()的hasNext()方法判断容器中是否还有元素,如果有,可以使用next()方法获取下一个元素。
3) 可以通过remove()方法删除迭代器返回的元素。

import java.util.HashSet;
import java.util.Iterator;
public class InteratorTest {
    public static void main(String[] args){
        HashSet set = new HashSet();
        set.add("a");
        set.add("b");
        set.add("c");
        set.add("d");
        set.add("e");
//      Iterator iter = set.iterator();
//      while(iter.hasNext()){
//          String value = (String)iter.next();
//          System.out.println(value);
//      }
        for(Iterator iter = set.iterator(); iter.hasNext(); ){
            String value = (String)iter.next();
            System.out.println(value);
        }
    }
}
运行结果:
d
e
b
c
a


2. iterator迭代器改变时发生ConcurrentModificationException异常
在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常
import java.util.ArrayList;
import java.util.Iterator;
public class InteratorTest {
    public static void main(String[] args){
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(4);
        list.add(3);
        list.add(2);
        Iterator<Integer> iterator = list.iterator();
        while(iterator.hasNext()){
            Integer integer = iterator.next();
            if (integer==2) {
                list.remove(integer);
            } else {
                System.out.println(integer);    
            }
        }
    }
}
运行结果:
4
3
Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
    at java.util.ArrayList$Itr.next(Unknown Source)
    at com.test.sort.InteratorTest.main(InteratorTest.java:13)

    
在使用arraylist的remove()方法就会出现问题,需要使用iterator.remove()方法就不会出现问题了
import java.util.ArrayList;
import java.util.Iterator;
public class InteratorTest {
    public static void main(String[] args){
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(4);
        list.add(3);
        list.add(2);
        Iterator<Integer> iterator = list.iterator();
        while(iterator.hasNext()){
            Integer integer = iterator.next();
            if (integer==2) {
                // list.remove(integer);
                iterator.remove();
            } else {
                System.out.println(integer);    
            }
        }
    }
}
运行结果:
4
3


推荐博客:
https://blog.csdn.net/dove_knowledge/article/details/71023512
https://www.cnblogs.com/andy-zhou/p/5339683.html
上一篇: hibernate 下一篇: 没有下一篇了!
发表评论
用户名: 匿名