迭代器的实现原理:
Collection接口中有一个iterator方法,该方法可以获取一个迭代器对象
具体的每一个实现类都需要覆盖重写该方法
一、迭代器是什么?
迭代器的作用:
是用来访问容器(用来保存元素的数据结构)中的元素,所以使用迭代器,我们就可以访问容器中里面的元素。这和访问数组这个序列的指针一样,因为数组范围内的指针就是迭代器的一种。
二、实现原理
1.方法摘要:
boolean hasNext();//判断是否有下一个元素
E next();//获取元素
void remove();//通过next方法获取的是谁,删除的就是谁
2.注意事项:
注意事项:
1.使用迭代器遍历集合的过程中,不能通过集合对象进行增删操作。
可以通过迭代器的删除方法,删除某个元素
3.使用方法:
[1]正常遍历集合:
在调用Iterator的next方法之前,迭代器的索引位于第一个元素之前,不指向任何元素,当第一次调用迭代器的next方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回,当再次调用next方法时,迭代器的索引会指向第二个元素并将该元素返回,依此类推,直到hasNext方法返回false,表示到达了集合的末尾,终止对元素的遍历。
public class Test1 {
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("张三");
c.add("张三丰");
c.add("张三疯了");//添加元素
Iterator<String> iterator = c.iterator(); //获取迭代器对象
while(iterator.hasNext()) {//判断是否有下一个元素
String element = iterator.next(); //获取元素
if("张三".equals(element)) {
iterator.remove();//通过迭代器对象,进行删除,获取的是谁,删除的就是谁
}
}
System.out.println(c);
}
}
[2]增强for循环遍历集合:
增强for循环简称forEach循环
语法:
for(数据类型 变量名:要遍历的集合){}
增强for循环遍历集合的底层实现就是迭代器。
(代码演示):
public class Test2{
public static void main(String[] args) {
Collection<String> c = new ArrayList<>();
c.add("张三");
c.add("张三丰");
c.add("张三疯了");
for(String s:c) {//遍历集合,c表示要遍历的集合
System.out.println(s);
}
}
}
总结
迭代器的实现原理:
Collection接口中有一个iterator方法,该方法可以获取一个迭代器对象
具体的每一个实现类都需要覆盖重写该方法
ArrayL...
Linked...
...
每个实现类中都返回了一个Iterator类型的对象,返回的是Iterator的实现类对象。