我是靠谱客的博主 勤劳小甜瓜,最近开发中收集的这篇文章主要介绍java foreach跳出本次循环_Java集合源码分析之Iterable概述前言IterableIterator,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

当我们想要遍历集合时,Java为我们提供了多种选择,通常有以下三种写法:

  • 写法1:for循环
d3450d7c3a7fd63c2055f16a07ecbd43.png
  • 写法2:foreach循环
bd55f03a15d7f19169c83bad913bc4c1.png
  • 写法3:Iterator
31866e888b06d69695a1dc774b3c8171.png

那么以上三种遍历方式有何区别呢?for循环我们很熟悉了,就是根据下标来获取元素,这个特性与数组十分吻合,不熟悉的朋友可以阅读前面讲解数组的文章。foreach则主要对类似链表的结构提供遍历支持,链表没有下标,所以使用for循环遍历会大大降低性能。Iterator就是我们今天要讲述的主角,它实际上就是foreach

那么,为什么集合可以进行foreach遍历,而我们自己定义的Java对象却不可以呢?有没有办法让任何对象都支持这种遍历方式?下面的内容会告诉我们答案。

Iterable

Iterable是迭代器的意思,作用是为集合类提供for-each循环的支持。由于使用for循环需要通过位置获取元素,而这种获取方式仅有数组支持,其他许多数据结构,比如链表,只能通过查询获取数据,这会大大的降低效率。Iterable就可以让不同的集合类自己提供遍历的最佳方式。

Iterable的文档声明仅有一句:

Implementing this interface allows an object to be the target of the "for-each loop" statement.

它的作用就是为Java对象提供foreach循环,其主要方法是返回一个Iterator对象:

4e8cc8541fe95d9d2f6c06647e652b97.png

也就是说,如果想让一个Java对象支持foreach,只要实现Iterable接口,然后就可以像集合那样,通过Iterator iterator = strings.iterator()方式,或者使用foreach,进行遍历了。

Iterator

Iterator是foreach遍历的主体,它的代码实现如下:

b576605e237a151791d01b0be8ca5a6e.png

Iterator还有一个子接口,是为需要双向遍历数据时准备的,在后续分析ArrayList和LinkedList时都会看到它。它主要增加了以下几个方法:

6f2b239775bea38905470f27701a11d6.png

专注于编程、互联网动态。最终将总结的技术、心得、经验(数据结构与算法、源码分析等)享给大家,这里不只限于技术!还有职场心得、生活感悟、以及面经。

点击上方 关注按钮,第一时间送达!

最后

以上就是勤劳小甜瓜为你收集整理的java foreach跳出本次循环_Java集合源码分析之Iterable概述前言IterableIterator的全部内容,希望文章能够帮你解决java foreach跳出本次循环_Java集合源码分析之Iterable概述前言IterableIterator所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部