我是靠谱客的博主 炙热月饼,这篇文章主要介绍简述Iterable与Iterator接口一、概述二、简单的应用三、区别与联系,现在分享给大家,希望可以做个参考。

目录

  • 一、概述
    • 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
18
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接口一、概述二、简单内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部