1. 程式人生 > >JAVA——Iterable介面

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()方法是新增的

(完)