Java 集合系列(4): Iterable接口源码

标签:  Iterable Java 集合
2人阅读 评论(0) 收藏 举报
分类:
package java.lang;

import java.util.Iterator;
import java.util.Objects;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.function.Consumer;

/**
 * 实现这个接口允许对象成为for-each循环语句的目标 
 * @since 1.5
 * @jls 14.14.2 The enhanced for statement
 */
public interface Iterable<T> {
    
    //返回T类型的元素上的一个迭代器 
    Iterator<T> iterator();

   
     /** 
     * 对这个Iterable的每一个元素执行给定的动作指导所有元素都被处理或者动作抛出一个异常 
     * 为止。除非被实现类指定,动作将以迭代的顺序执行(如果一个迭代的顺序被指定。)被动作 
     * 抛出的异常将被传递给调用者  
     * @since 1.8
     */
    default void forEach(Consumer<? super T> action) {
    	// 验证action是否为null,如果action为null,则抛出NullPointerException  
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }

    /** 
     * 创建一个被这个Iterable接口描述的元素上Spliterator。 
     *  
     * 默认实现从iterable的Iterator中创建一个早期绑定的spliterator。这个spliterator 
     * 继承iterable的iterator的fail-fast性质。 
     *  
     * 默认实现应该总是被重写。被默认实现返回的spliterator拥有不好分解能力,是不依据指定 
     * 大小定制的,而且不报告任何spliterator的性质。实现类差不多总是能提供更好的实现。 
     * 
     * @since 1.8
     */  
    
    default Spliterator<T> spliterator() {
        return Spliterators.spliteratorUnknownSize(iterator(), 0);
    }
}

查看评论

java集合中的Iterable接口的简介与运用

Iterable接口 (java.lang.Iterable) 是Java集合的顶级接口之一。Collection接口继承Iterable,所以Collection的所有子类也实现了Iterable接...
  • hgh813210
  • hgh813210
  • 2015-08-31 15:31:35
  • 1931

Java集合类是Iterable的实现类的原因

Iterator和Iterable都是接口。 好多集合类,比如List一族或者Set一族,都实现了Iterable接口,这样对象就可以调用iterator()方法。 一...
  • aa8568849
  • aa8568849
  • 2016-09-24 14:32:54
  • 2741

Java8 Iterable接口源码阅读

/** * 实现这个接口允许对象成为for-each循环语句的目标 */ public interface Iterable { /** * 返回T类型的元素上的一个迭代器 ...
  • l294265421
  • l294265421
  • 2015-04-19 18:49:38
  • 865

源码分析-java-Iterator接口和Iterable<T>接口

API文档: 首先Iterator的出现是为了替代Enumeration. 它和Enumeration不同的是,它可以删除迭代的内容。并且被更好的命名 这个接口只有四个方法: boolean ...
  • u011518120
  • u011518120
  • 2016-07-16 14:46:56
  • 564

【Java编程】foreach支持集合、Collection、Iterable遍历原因分析

1、foreach循环支持对Iterable类(实现了Iterable接口)的遍历,该结论在本blog第3节得到论证; 2、Collection接口继承Iterable接口,foreach支持对实现了...
  • a13429921973
  • a13429921973
  • 2013-10-19 16:58:02
  • 6548

java为什么不直接实现Iterator接口,而是实现Iterable

Iterator是迭代器类,而Iterable是接口。好多类都实现了Iterable接口,这样对象就可以调用iterator()方法。         看一下JDK中的集合类,比如List一...
  • liuhuanchao
  • liuhuanchao
  • 2016-04-20 15:07:55
  • 1224

java基础巩固系列(九):持有对象之间的使用与关系(Iterable、Collection、List、Queue、Set、Map、Stack)

java中的持有对象之间的继承关系
  • u010800530
  • u010800530
  • 2015-01-17 16:04:44
  • 1653

学习java笔记 --- 一个实现Iterable<E>接口的小范例

以下的文档摘自JDK 5.0文档说明 java.lang 接口 Iterable public interface Iterable 实现这个接口允许对象成为 "fore...
  • yangqinjiang
  • yangqinjiang
  • 2012-05-04 19:59:26
  • 23799

java迭代器--Iterator和Iterable接口

java中有很多集合类型,不同的集合类型有不同的接口和实现。为了提供统一的操作接口,java提供了Iterator接口。本文主要介绍了java的迭代器,Iterator接口和foreach循环的Ite...
  • shuanghujushi
  • shuanghujushi
  • 2016-05-29 11:47:40
  • 1991
    个人资料
    持之以恒
    等级:
    访问量: 7264
    积分: 782
    排名: 6万+
    轻松一下
    文章存档
    最新评论