目录
- 一、概述
- 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如下:
二、简单的应用
一般来说,集合的遍历有三种方式,如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18List<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接口一、概述二、简单内容请搜索靠谱客的其他文章。
发表评论 取消回复