Iterable接口源码理解

文章目录

  • 前言
  • 一、概述
  • 二、源码理解
    • 方法
      • iterator
      • forEach
      • spliterator
  • 总结


前言

本文章帮助大家对Iterable接口的理解。


一、概述

Iterable意为可迭代的。顾名思义,为让(集合)对象可以用for循环进行迭代遍历所含元素,建议实现此接口。

二、源码理解

package java.lang;

使用Iterable接口时,此包自动引入。

import java.util.Iterator;

Iterable接口重点实现iterator()以获取迭代器,其返回类型为Iterator。参考Iterator接口。

public interface Iterable<T> { /*...*/ }

使用接口时传入泛型T,为可迭代对象的元素的类型。

方法

iterator

Iterator<T> iterator();

重点:为使实现Iterable接口的类对象可以进行迭代遍历,那么需要实现类自定义迭代方法,即实现此方法以返回迭代器。而若要使用自定义迭代器,需实现Iterator接口的hasNextnext方法。

forEach

default void forEach(Consumer<? super T> action) { /*...*/ }

遍历所有元素,对其调用action。参考Consumer接口。default关键字给出默认实现。若参数为空,则抛出NullPointerException异常。

spliterator

default Spliterator<T> spliterator() { return Spliterators.spliteratorUnknownSize(iterator(), 0); }

返回此接口覆盖的元素的未给定大小的分割迭代器,可用来遍历、分割序列。参考Spliterators.spliteratorUnknownSize方法。default关键字给出默认实现。


总结

新人源码理解,望大家多多指点。

你可能感兴趣的:(java,#,jdk14,#,jdk18,java)