Iterator迭代器ListIterator

Iterator

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

  1. iterator.hasNext() ->判断有没有下一个元素
  2. iterator.next() ->获取下一个元素
 /**
         * 获取 iterator 迭代器
         *  iterator.HasNext()  判断下 指针右侧有没有元素
         *  iterator.next()   获取指针右侧的元素 并且有右移动一位
          */
        Iterator<Integer> iterator = arr.iterator();
        while (iterator.hasNext() ) {
            iterator.next();
        }

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

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

**注意:**每次next中 只能调用一次 remove 方法
唯一不报错的的删除方式# ListIterator

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

        //顺序 遍历,每次获取下一个指针 数据
        while(integerListIterator.hasNext()){
            integerListIterator.next();
        }
        //倒序 遍历 每次获取上一个元素
        while(integerListIterator.hasPrevious()){
            integerListIterator.previous();
        }
  1. set() 方法可以在遍历的时候往里面添加数据
 ListIterator<Integer> 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 但是 指针的镜像不会怎加,最后一次循环还是没跑到这里
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值