Java中iterator迭代器简介说明

乔欣 Java经验 发布时间:2022-11-23 17:42:17 阅读数:6537 1
下文笔者讲述java中iterator迭代器简介说明,如下所示

iterator迭代器简介

迭代器(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");
        for(Iterator iter = set.iterator(); iter.hasNext(); ){
            String value = (String)iter.next();
            System.out.println(value);
        }
    }
}

-----运行以上代码,将输出以下信息-----
d
e
b
c
a

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(66);
        list.add(88);
        list.add(77);
        Iterator<Integer> iterator = list.iterator();
        while(iterator.hasNext()){
            Integer integer = iterator.next();
            if (integer==77) {
                list.remove(integer);
            } else {
                System.out.println(integer);    
            }
        }
    }
}
----运行以上代码,将输出以下信息-----
66
88

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(66);
        list.add(88);
        list.add(77);
        Iterator<Integer> iterator = list.iterator();
        while(iterator.hasNext()){
            Integer integer = iterator.next();
            if (integer==77) {
                // list.remove(integer);
                iterator.remove();
            } else {
                System.out.println(integer);    
            }
        }
    }
}
----运行以上代码,将输出以下信息-----
66
88
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202211/16691966014970.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者