您的位置:首页 > 编程语言 > Java开发

JDK源码阅读——java.lang.Iterable

2018-01-25 21:53 316 查看

接口

接口
Iterable
概述

源码阅读

Iterable运用

Iterable

1. 概述

实现这个接口允许对象成为“for-each循环”语句的目标。

2.源码阅读

public interface Iterable<T> {
/**
*返回类型{@code T}元素的迭代器.
*
* @return  Iterator.
*/
Iterator<T> iterator();

/**
* 对Iterable的每个元素执行给定的操作,直到所有元素都被处理或操作抛出异常
*
* @param action 为每个元素执行的操作 例如:(s)-> System.out.println(s)
*
* @throws NullPointerException 如果指定的操作为空
* @since 1.8
*/
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}

/**
* 在这个Iterable描述的元素之上创建一个Spliterator。
* @return 一个Spliterator对这个元素所描述的元素。
* @since 1.8
*/
default Spliterator<T> spliterator() {
return Spliterators.spliteratorUnknownSize(iterator(), 0);
}


3.Iterable运用

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class SubIterable implements Iterable<String> {
private List<String> strings = new ArrayList<String>();

public void add(String string){
strings.add(string);
}

@Override
public Iterator<String> iterator() {
return strings.iterator();
}

}

public class IterableTest {
@Test
public void test(){
SubIterable subIterable = new SubIterable();
subIterable.add("加进去");
subIterable.add("再加进去1");
subIterable.add("再加进去2");
subIterable.add("再加进去3");
System.out.println("for - each:");
for (String s:subIterable
) {
System.out.println(s);
}
System.out.println("forEach:");
subIterable.forEach((s) -> System.out.println(s));
}
}


输出结果 :

for - each:

加进去

再加进去1

再加进去2

再加进去3

forEach:

加进去

再加进去1

再加进去2

再加进去3


实现Iterable就可以用for-each语句
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: