Iterator迭代器ListIterator

Iterator迭代器ListIterator,第1张

Iterator迭代器ListIterator Iterator

lterator 迭代器接口,实现了此接口的类才可以使用 增强for
String 字符串 不是使用 增强for遍历

    iterator.hasNext() ->判断有没有下一个元素iterator.next() ->获取下一个元素
 
        Iterator iterator = arr.iterator();
        while (iterator.hasNext() ) {
            iterator.next();
        }

在arr.iterator 时创建 镜像
创建进行之后,到 next 开始获取指针到 所有指针获取完成的期间
不能被 remove 以外的任何方法 修改 原数据,否则会造成 元数据和 镜像的不一致。

Exception in thread "main" java.util.ConcurrentModificationException
 Iterator iterator = arr.iterator();//创建镜像

**注意:**每次next中 只能调用一次 remove 方法
# ListIterator

    hasNext() 顺序遍历 next() 获取元素hasPrevious() 倒序遍历 previons() 获取元素
ArrayList arr = new ArrayList<>();
        arr.add(100);
        arr.add(200);
        arr.add(300);
        //获取指针
        ListIterator integerListIterator = arr.listIterator();

        //顺序 遍历,每次获取下一个指针 数据
        while(integerListIterator.hasNext()){
            integerListIterator.next();
        }
        //倒序 遍历 每次获取上一个元素
        while(integerListIterator.hasPrevious()){
            integerListIterator.previous();
        }
    set() 方法可以在遍历的时候往里面添加数据
 ListIterator x = arr.listIterator(1);//创建一个从 下标 1开始的指针
        while(integerListIterator.hasNext()){
            Integer next = integerListIterator.next();
            if(next == 200){  //当指针 获取200的元素时
                arr.add(400);  //会在指针移动后的下一个位 添加400
            }else if( next == 400){
                x.set(500); //这里 在添加400 但是 指针的镜像不会怎加,最后一次循环还是没跑到这里
            }
        }

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5712537.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存