概述
目录
- 一、概述
- 1.1 Iterator接口
- 1.2 Iterable接口
- 二、简单的应用
- 三、区别与联系
- 3.1 为什么要实现Iterable接口,而不是直接实现Iterator接口?
- 3.2 为什么不把hasNext()和next()方法放在Iterable接口中?
一、概述
1.1 Iterator接口
Iterator接口定义了集合和流操作等的遍历方法。封装了一系列迭代器的方法,因此,Itreator的对象也被称为“迭代器”。
常用的API如下:
1.2 Iterable接口
Iterable接口是一个可迭代的接口,其中提供了获取Iterator迭代器的方法和获取Spliterator可分割迭代器的方法。
获取Iterator的方法用以支持集合的遍历;获取Spliterator的方法用以支持集合的并发遍历。
其次,对于实现Iterator的类还提供了forEach遍历方法。
常用的API如下:
二、简单的应用
一般来说,集合的遍历有三种方式,如下所示:
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
//for循环遍历
for(int i = 0;i < list.size();i++){
System.out.print(list.get(i)+",");
}
//迭代器遍历
Iterator iterator = list.iterator();
while(iterator.hasNext()){
System.out.print(iterator.next()+",");
}
//forEach循环
for(Integer i:list){
System.out.print(i+",");
}
第一种是普通的for循环,后面两种是Iterator迭代器和forEach循环。
三、区别与联系
3.1 为什么要实现Iterable接口,而不是直接实现Iterator接口?
因为Iterator接口中的核心方法,next()或hasNext()均依赖于迭代器当前的位置,即依靠迭代器的指针,因此,若Collection集合直接继承Iterator接口,不同的方法调用集合遍历时,就共用了一个迭代器,由于迭代器的指针无法重置,就会导致返回无法预测的值,其次,即使迭代器能重置指针位置,也仅能同时存在一个迭代器,无法满足集合中多种遍历方式的需求。
所以,实现Iterable接口,能在每次调用的时候都返回一个从头开始计数的迭代器,允许多个迭代器同时存在且彼此互不干扰工作。
3.2 为什么不把hasNext()和next()方法放在Iterable接口中?
原因和上面一样,主要还是指针和多个Iterator迭代器的问题。
最后
以上就是炙热月饼为你收集整理的简述Iterable与Iterator接口一、概述二、简单的应用三、区别与联系的全部内容,希望文章能够帮你解决简述Iterable与Iterator接口一、概述二、简单的应用三、区别与联系所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复