Iterator迭代器
在程序开发中,经常需要遍历集合中的所有元素。针对这种需求, JDK专门提供了一个接口
java.util.Iterator。Iterator 接口也是Java集合中的一员,但它与collection、Map 接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历) Collection 中的元素,因此Iterator对象也被称为迭代器。
想要遍历Collection集合,那么就要获取该集合迭代器完成迭代操作,下面介绍一下获取迭代器的方法 :
●public Iterator iterator() :获取集合对应的迭代器,用来遍历集合中的元素的。
下面介绍一下迭代的概念:
●迭代:即Collection集合元素的通用获取方式。在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,如果还有就再取出出来。-直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。
迭代器是一种通用的取出集合中元素的方法
API中的方法如下:
使用步骤:
- 使用集合中的方法iterator()获取迭代器的实现类对象
- 使用Iterato接口中的方法hasNext判断还有没有下一个元素
- 使用Iterator接口中的方法next取出集合中的下一个元素
代码示例:
import java.util.Iterator;
import java.util.Collection;
import java.util.ArrayList;
public class IteratorClass {
public static void main(String[] args) {
/**
* Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator
* 接口的实现类对象,获取实现类的方式比较特殊
* Collection中有一个方法,iterator(),这个方法的返回值
* 就是迭代器的实现类对象
* Iterator<E> iterator() 返回值
*
* 使用步骤:
* 1. 使用集合中的方法iterator()获取迭代器的实现类对象
* 2.使用Iterato接口中的方法hasNext判断还有没有下一个元素
* 3.使用Iterator接口中的方法next取出集合中的下一个元素
*/
//创建集合对象
Collection<String> coll = new ArrayList<>();
//add元素
coll.add("Leo");
coll.add("Mary");
coll.add("Alice");
coll.add("Lue");
Iterator<String> it = coll.iterator();
//用 hasNext方法判断是否还有下一个元素
boolean b = it.hasNext();
System.out.println(b); //true;
//用next方法去除集合中的下一个元素
String s = it.next();
System.out.println(s);
//当不知道有多少个元素时,可以用while循环遍历集合中的元素
//循环结束条件为hasNext返回值为false
while(it.hasNext()) {
String e = it.next();
System.out.println(e);
}
System.out.println("=================");
for(Iterator<String> it2 =coll.iterator();it2.hasNext();){
String s2 = it.next();
System.out.println(s2);
}
}
}
迭代器工作原理:
用iterator()方法返回的迭代器实际上是一个指向-1的指针(索引),用hasNext判断是否有下一个元素时,讲指针指向0号元素,若有则返回true,并用next()把元素取出来,如下往下判断。
————————————————————————