我是靠谱客的博主 炙热月饼,最近开发中收集的这篇文章主要介绍简述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如下:
在这里插入图片描述

二、简单的应用

一般来说,集合的遍历有三种方式,如下所示:

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接口一、概述二、简单的应用三、区别与联系所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部