lterator 迭代器接口,实现了此接口的类才可以使用 增强for
String 字符串 不是使用 增强for遍历
- iterator.hasNext() ->判断有没有下一个元素iterator.next() ->获取下一个元素
Iteratoriterator = arr.iterator(); while (iterator.hasNext() ) { iterator.next(); }
在arr.iterator 时创建 镜像
创建进行之后,到 next 开始获取指针到 所有指针获取完成的期间
不能被 remove 以外的任何方法 修改 原数据,否则会造成 元数据和 镜像的不一致。
Exception in thread "main" java.util.ConcurrentModificationException
Iteratoriterator = arr.iterator();//创建镜像
**注意:**每次next中 只能调用一次 remove 方法
# ListIterator
- hasNext() 顺序遍历 next() 获取元素hasPrevious() 倒序遍历 previons() 获取元素
ArrayListarr = 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() 方法可以在遍历的时候往里面添加数据
ListIteratorx = 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条)