Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。
Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Collection API 中的接口, 它扩展了 Iterator 接口
迭代器 it 的两个基本操作是 next 、hasNext 和 remove。
调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。
调用 it.hasNext() 用于检测集合中是否还有元素。
调用 it.remove() 将迭代器返回的元素删除。
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionDemo3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
Collection系列集合三种通用的遍历方式
1.迭代器遍历
2.增强for遍历
3.Lambda表达式遍历
迭代器遍历的三个相关方法:
Iterator<E> itrator() : 获取一个迭代器对象
boolean hasNext() : 判断当前指向的位置是否有元素
E next() : 获取当前指向的元素并移动指引
*/
//1.创建集合并添加元素
Collection<String> coll=new ArrayList<>();
coll.add("今");
coll.add("天");
coll.add("学");
coll.add("习");
coll.add("java");
coll.add("了");
coll.add("吗");
coll.add("?");
//2.获取迭代器对象
//迭代器就好比是一个箭头,默认指向集合的0索引处
Iterator<String> it=coll.iterator();
//3.利用循环不断地去获取集合中的每一个元素
while(it.hasNext()) {
//4.next方法的两件事情:获取元素并移动指针
String str=it.next();
System.out.print(str);
}
}
}
有关迭代器的四个小细节:
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
class CollectionDemo4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
迭代器的细节注意点:
1.报错NoSuchElementExpception
2.迭代器遍历完毕,指针不会复位
3.循环中只能用一次next方法
4.迭代器遍历时,不能用集合的方法进行增加或删除
如果我实在要删除,那么可以用迭代器提供的remove方法进行删除
如果想要添加,暂时没有办法
*/
//1.创建集合并添加元素
Collection<String> coll=new ArrayList<>();
coll.add("今");
coll.add("天");
coll.add("学");
coll.add("习");
coll.add("java");
coll.add("了");
coll.add("吗");
coll.add("?");
//2.获取迭代器对象
//迭代器就好比是一个箭头,默认指向集合的0索引处
Iterator<String> it1=coll.iterator();
//3.利用循环不断地去获取集合中的每一个元素
while(it1.hasNext()) {
//4.next方法的两件事情:获取元素并移动指针
String str=it1.next();
System.out.print(str);
}
//当上面循环结束之后,迭代器的指针已经指向了最后没有元素的位置
//System.out.println(it.next()); //NoSuchElementException(报错)
//迭代器遍历完毕,指针不会复位
System.out.println();
System.out.println(it1.hasNext());//false
//如果我i们要继续第二次遍历集合,只能再次获取一个新的迭代器对象
Iterator<String> it2=coll.iterator();
while(it2.hasNext()) {
String str=it2.next();
System.out.print(str);
}
// 3.循环中只能用一次next方法
Iterator<String> it3=coll.iterator();
while(it3.hasNext()) {
String str=it3.next();
if("bbb".equals(str)) {
//4.迭代器遍历时,不能用集合的方法进行增加或删除
//coll.remove("今");//(报错)
it3.remove();
}
System.out.print(str);
}
}
/*
课程小结:
1.迭代器在遍历集合的时候是不依赖索引的
2.迭代器需要掌握的三个方法
Iterator<E> itrator() : 获取一个迭代器对象
boolean hasNext() : 判断当前指向的位置是否有元素
E next() : 获取当前指向的元素并移动指引
3.迭代器的四个细节:
1.报错NoSuchElementExpception
2.迭代器遍历完毕,指针不会复位
3.循环中只能用一次next方法
4.迭代器遍历时,不能用集合的方法进行增加或删除
如果我实在要删除,那么可以用迭代器提供的remove方法进行删除
如果想要添加,暂时没有办法
*/
}
小结:
课程小结:
1.迭代器在遍历集合的时候是不依赖索引的
2.迭代器需要掌握的三个方法
Iterator<E> itrator() : 获取一个迭代器对象
boolean hasNext() : 判断当前指向的位置是否有元素
E next() : 获取当前指向的元素并移动指引
3.迭代器的四个细节:
1.报错NoSuchElementExpception
2.迭代器遍历完毕,指针不会复位
3.循环中只能用一次next方法
4.迭代器遍历时,不能用集合的方法进行增加或删除
如果我实在要删除,那么可以用迭代器提供的remove方法进行删除
如果想要添加,暂时没有办法