1. 程式人生 > >Java常見集合框架(二):Iterable、Collection(List、Set、Queue)、AbstractCollection

Java常見集合框架(二):Iterable、Collection(List、Set、Queue)、AbstractCollection

1.Iterable<T>

     是Collection(List、Set、Queue)的頂級介面,api釋義:實現這個介面允許物件成為 "foreach" 語句的目標。

 即可用於迭代。之所以List、Set沒有直接實現Iterator介面,是由於Iterator的迭代(next及hashNext方法)是基於迭代器的當前位置。若直接實現,則當集合類被當做方法引數傳遞時,迭代位置不可知,導致next()方法結果不可知。     單獨實現則可每次都返回從起始位置開始遍歷的迭代器。     List的迭代由AbstractList類實現,Set由具體集合類實現,如HashSet、TreeSet均有,Queue由具體集合類實現,如
LinkedBlockingQueue。
package java.lang;

import java.util.Iterator;

public abstract interface Iterable<T> {
	public abstract Iterator<T> iterator();//返回一個在一組 T 型別的元素上進行迭代的迭代器。
}
package java.util;

public abstract interface Iterator<E> {
	public abstract boolean hasNext();

	public abstract E next();

	public abstract void remove();
}

2.Collection<E>

    public abstract interface Collection<E> extends Iterable<E>:Collection 層次結構中的根介面。Collection 表示一組物件,這些物件也稱為 collection 的元素。一些 collection 允許有重複的元素,而另一些則不允許。一些 collection 是有序的,而另一些則是無序的。JDK 不提供此介面的任何直接 實現:它提供更具體的子介面(如 Set 和 List)實現。此介面通常用來傳遞 collection,並在需要最大普遍性的地方操作這些 collection。

   包含對集合元素的add、remove、size、clear、contains、equals、hashCode等方法。

   Collections是其幫助類。

3.AbstractCollection<E>

     此類提供 Collection 介面的骨幹實現,以最大限度地減少了實現此介面所需的工作。

     要實現一個不可修改的 collection,程式設計人員只需擴充套件此類,並提供 iterator 和 size 方法的實現。(iterator 方法返回的迭代器必須實             現 hasNext 和 next。)

     要實現可修改的 collection,程式設計人員必須另外重寫此類的 add 方法(否則,會丟擲 UnsupportedOperationException),iterator 方法返回的迭代器還必須另外實現其 remove 方法。

     按照 Collection 介面規範中的建議,程式設計人員通常應提供一個 void (無引數),用於建立空 collection和 Collection 構造方法,用於建立一個具有與其引數相同元素新的 collection

public abstract class AbstractCollection<E> implements Collection<E>{
 	public boolean add(E paramE) {
		throw new UnsupportedOperationException();//不支援的操作,若想修改,子類必須重寫
	}
}