Iterator 迭代器概述
Collection 继承了Iterable接口,间接继承了Iterator 接口,实现对集合的遍历功能。
Iterator 接口提供方法
boolean hasNext()
如果仍有元素可以迭代,则返回 true。
Object next()
返回迭代的下一个元素。
void remove()
删除集合上一次next方法返回的元素
void forEachRemaining(Consumer action)
java8新工能,通过lambda表达式遍历集合
案例
//1. Collectin 的子接口set|list |queue都可以这样使用(list为例)
List collection = new LinkedList();
Iterator iterator =collection.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
//2. list 集合实现了ListIterator接口也可以这样使用
List collection = new LinkedList();
ListIterator iterator =collection.ListIterator();
//ListIterator iterator =collection.ListIterator(index);
while(iterator.hasNext()){
System.out.println(iterator.next());
}
//3.Map集合
Map map = new TreeMap();
//遍历值
Collection collection =map.values() ;
Iterator iterator =collection.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
//按键遍历
Set keys =map.keySet();
Iterator iterator =keys .iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
注意点
1.遍历的时候不可以修改集合
2.删除元素只能通过remove()方法删除
List list = new LinkedList();
list.add(1);
list.add(2);
list.add(3);
System.out.println(list);//输出: [1,2,3]
ListIterator iterator =list.listIterator();
while(iterator.hasNext()){
iterator.next();// 必须调用
iterator.remove();
}
System.out.println(list);//输出: [1,2,3]