Java集合源码分析之Iterable概述

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

Iterable的文档声明仅有一句:

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

其主要方法是返回一个Iterator对象。

Iterator<T> iterator(); 

Iterator对象我们有时也会用到,经常使用的while(it.hasNext())中的hasNext方法就是在这里定义的。Iterator一共有四个方法:

// 判断一个对象集合是否还有下一个元素 boolean hasNext(); // 获取下一个元素 E next(); // 删除最后一个元素。默认是不支持的,因为在很多情况下其结果不可预测,比如数据集合在此时被修改 default void remove(){...} // 主要将每个元素作为参数发给action来执行特定操作 default void forEachRemaining(Consumer<? super E> action){...} 

Iterator还有一个子接口,是为需要双向遍历数据时准备的,我们在ArrayListLinkedList中都会看到它。其主要增加了以下几个方法:

// 是否有前一个元素 boolean hasPrevious(); // 获取前一个元素 E previous(); // 获取下一个元素的位置 int nextIndex(); // 获取前一个元素的位置 int previousIndex(); // 添加一个元素 void add(E e); // 替换当前元素值 void set(E e); 

Iterable的作用是很明显也很强大的,通过hasNext方法,可以减少诸如链表等结构的查询复杂度,forfor-each循环的主要区别也在此。

转载:https://www.jianshu.com/p/20cd61fffcdb

    原文作者:java集合源码分析
    原文地址: https://blog.csdn.net/maxiaoyin111111/article/details/80785354
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞