JAVA——Iterable接口

/资料参考于JAVA8 API与jdk1.8.0_51源码/

Interface Iterable< T >

Iterable接口中T可以接收各种类型定义,实现Iterable接口允许类作为“for-each loop”循环的声明对象

子接口有:
1. BeanContext
2. BeanContextServices
3. BlockingDeque< E >
4. BlockingQueue< E >
5. Collection< E >
6. Deque< E >
7. DirectoryStream< T >
8. List< E >
9. NavigableSet< E >
10. Path, Queue< E >
11. SecureDirectoryStream< T >
12. Set< E >
13. SortedSet< E >
14. TransferQueue< E >

实现Iterable接口的类有:(太多就不排序了)
AbstractCollection, AbstractList, AbstractQueue, AbstractSequentialList, AbstractSet, ArrayBlockingQueue, ArrayDeque, ArrayList, AttributeList, BatchUpdateException, BeanContextServicesSupport, BeanContextSupport, ConcurrentHashMap.KeySetView, ConcurrentLinkedDeque, ConcurrentLinkedQueue, ConcurrentSkipListSet, CopyOnWriteArrayList, CopyOnWriteArraySet, DataTruncation, DelayQueue, EnumSet, HashSet, JobStateReasons, LinkedBlockingDeque, LinkedBlockingQueue, LinkedHashSet, LinkedList, LinkedTransferQueue, PriorityBlockingQueue, PriorityQueue, RoleList, RoleUnresolvedList, RowSetWarning, SerialException, ServiceLoader, SQLClientInfoException, SQLDataException, SQLException, SQLFeatureNotSupportedException, SQLIntegrityConstraintViolationException, SQLInvalidAuthorizationSpecException, SQLNonTransientConnectionException, SQLNonTransientException, SQLRecoverableException, SQLSyntaxErrorException, SQLTimeoutException, SQLTransactionRollbackException, SQLTransientConnectionException, SQLTransientException, SQLWarning, Stack, SyncFactoryException, SynchronousQueue, SyncProviderException, TreeSet, Vector

具体接口代码:

package java.lang;

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

public interface Iterable<T> {

    Iterator<T> iterator();

    default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }

    default Spliterator<T> spliterator() {
        return Spliterators.spliteratorUnknownSize(iterator(), 0);
    }
}
  1. iterator()方法:返回一个迭代器
  2. forEach()方法:Consumer< ? super T > action表示可以传入一个lambda表达式或者一个方法引用,然后为每一个元素执行传入的动作,直到所有元素都被操作一遍或者抛出异常(注:forEach方法会抛出NullPointerException异常)。所有动作顺序按照迭代器顺序,除非实现另有指定的实现类
  3. spliterator()方法:默认创建一个前绑定spliterator iterable的迭代器。spliterator继承了iterable的迭代器的快速失败的属性(注:该方法通常应该要重写,因为返回的默认spliterator实现功能很差,是未分级的,不报告任何spliterator特征,重写实现几乎总是提供更好的实现

其中forEach() 和spliterator()方法是新增的

(完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值