Iterator(迭代器)是一个很重要的接口,作用和遍历差不多
在Collection的集合里面,因为没有索引所以无法用for循环,这个时候就需要用到Iterator接口
迭代:是Collection集合元素的通用获取方式,取元素前会先进行判断是否存在元素如果有就把元素取出来,一直到把集合的元素全部取出来
一.Iterator的常用方法
1.
public boolean hasNext();
判断有没有下一个元素,如果有就返回ture,若没有就返回false
2.
E next();
返回迭代的下一个元素;
二.Iterator的对象创建
Iterator是一个接口我们无法直接创建对象,在Collection方法中,有一个Iterator Iterator()的方法返回值是一个迭代器
三.迭代器的使用步骤
1.使用集合的方法iterator()获取一个迭代器的实现类对象
2.用Iterator中的hasNext()方法判断集合中有没有下一个元素
3.用Iterator中的next()方法取出元素迭代器的操作
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Demo01Iterator {
public static void main(String[] args) {
Collection c=new ArrayList<>();//创建一个集合对象
c.add("天才");
c.add("傻子");
c.add("笨蛋");
Iterator i=c.iterator();//用Collection集合里的iterator方法获取一个迭代器对象,用迭代器接收
while(i.hasNext()){//判断集合下一个位置有没有元素有就执行
String s = i.next();//取出集合迭代的下一个元素
System.out.println(s);//输出取出的元素
}
}
}
代码使用注释都如图
hasNext()方法浅析:
在代码:Iterator i=c.iterator();
不但获取了一个实现类的对象并且将一个指针(索引)指向集合的负一位置hasNext
执行hasNext()的时候就会判断当前指针的下一个位置有没有元素,有就返回ture,当前指向-1,那么它就会判断1的位置有没有元素
next()方法:
next()方法会做两件事,第一是取出hasNext()判断出有元素的位置的元素,然后将指针往后移动一位。next()
三.增强for循环
要求:jdk1.5以后
作用:遍历,也是一个迭代的过程使用的也是迭代器,用for循环的格式简化了迭代器的书写
集合和数组可以使用的原因:Collection继承了一个叫Iterable的接口,使得继承了这个接口的数组和集合都可以使用foreach(增强for循环)
增强for循环的格式:
for(集合/数组的数据类型 变量名:集合/数组名){
输出(变量名)
}
例子:增强for循环遍历输出
import java.util.ArrayList;
public class Demo02ForEach {
public static void main(String[] args) {
demo01();
}
private static void demo01() {
ArrayList list=new ArrayList<>();//创建集合对象
list.add("就这");
list.add("??");//添加元素
list.add("###");
list.add("$$$");
for (String i:list){//使用增强for循环遍历集合
System.out.println(i);//打印集合元素
}
}
}