1.Iterator迭代器:
1.1介绍
Collection接口继承了Iterable接口,在该接口中包含一个名为iterator的抽象方法,所有实现了Collection接口的容器类对该方法做了具体实现。iterator方法会返回一个Iterator接口类型的迭代器对象,在该对象中包含了三个方法用于实现对单例容器的迭代处理。
1.2Iterator接口定义了如下方法:
boolean hasNext(); //判断游标当前位置是否有元素,如果有返回true,否则返false;
Object next(); //获取当前游标所在位置的元素,并将游标移动到下一个位置;
void remove(); //删除游标当前位置的元素,在执行完next后该操作只能执行一次;
2.迭代器的使用
2.1使用 Iterator 迭代 List 接口类型容器
代码;
//使用 Iterator 迭代 List 接口类型
public class Iterator01 {
public static void main(String[] args) {
//实例化容器
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
//获取元素
//获取迭代器对象
Iterator<String> iterator = list.iterator();
//方式一:在迭代器中,通过 while 循环获取元素
while(iterator.hasNext()){
String value = iterator.next();
System.out.println(value);
}
System.out.println("--------------------------");
//方法二:在迭代器中,通过 for 循环获取元素
for (Iterator<String> it=list.iterator(); it.hasNext();){
String value = it.next();
System.out.println(value);
}
}
}
运行结果:
2.2 使用 Iterator 迭代 Set 接口类
//使用 Iterator 迭代 Set 接口类
public class Iterator02 {
public static void main(String[] args) {
//实例化 Set 类型的容器
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
//方式一:通过 while 循环
//获取迭代器对象
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
String value = iterator.next();
System.out.println(value);
}
System.out.println("-------------------------");
//方式二:通过 for 循环
for(Iterator<String> it = set.iterator();it.hasNext();){
String value = it.next();
System.out.println(value);
}
}
}
运行结果:
2.3 使用 Iterator 删除元素
代码
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Iterator03 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
System.out.println(list.toString());
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
//不要在一次循环中多次调用 next 方法。
String value = iterator.next();
if("c".equals(value)){
iterator.remove(); // 删除指定元素
}
}
System.out.println("----------------");
System.out.println(list.toString());
}
}
运行结果: