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语句
相关文章推荐
- jdk源码阅读之 java.lang.Iterable
- JDK源码阅读——java.lang.Readable
- JDK源码阅读系列(1) java.lang.Object
- JDK源码阅读——java.lang.Cloneable
- JDK源码阅读——java.lang.Thread.UncaughtExceptionHandler
- JDK源码阅读——java.lang.Comparable
- JDK源码阅读第二天——java.lang.CharSequence
- JDK源码阅读——java.lang.Runable
- JDK源码阅读第一天——java.lang.Appendable
- JDK源码阅读——java.lang.Boolean
- JDK源码阅读——java.lang.Character
- Java Jdk1.8 HashMap源码阅读笔记二
- Java8 Iterable接口源码阅读
- JDK源码分析:java.lang.Boolean
- JDK源码分析之 java.lang.Boolean
- 【JDK】:java.lang.String、StringBuilder、StringBuffer 源码解析
- jdk源码阅读之 java.util.Collection
- 【JDK】:java.lang.Integer源码解析
- 源码阅读笔记:java.lang.Object
- jdk源码阅读之 java.util.Iterator