Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.
Collections是針對集合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作。
Java類庫中用于集合類的基本接口是Collection接口。Collection接口擴展自Iterable接口,因此,可以在任何集合類中使用for each循環(huán)。
publicinterface Iterable<T> {
Iterator<T> iterator();
}
publicinterface Collection<E> extends Iterable<E>
Collection和Iterator是泛型接口,任何集合都可以使用其方法。Collection接口中的方法:
public static <E> boolean contains(Collection<E> c, Object obj)
{
for (E element : c)
if (element.equals(obj))
return true;
return false;
}
iterator方法返回一個實現(xiàn)了Iterator接口的對象。
publicinterface Iterator<E> {
boolean hasNext();
E next();
void remove();
}
Java集合類庫將接口與實現(xiàn)分離,Queue
publicabstractclass AbstractCollection<E> implements Collection<E>
一個集合類可以從AbstractCollection類擴展
除了Map結尾的類,其他類都實現(xiàn)了Collection接口。
ArrayList動態(tài)數(shù)組
ArrayList的內(nèi)部實現(xiàn)是基于內(nèi)部數(shù)組Object[],所以從概念上講,它更像數(shù)組,但LinkedList的內(nèi)部實現(xiàn)是基于一組連接的記錄,所以,它更像一個鏈表結構。
在ArrayList的前面或中間插入數(shù)據(jù)時,必須將其后的所有數(shù)據(jù)相應的后移,這樣必然要花費較多時間,所以,當你的操作是在一列數(shù)據(jù)的后面添加數(shù)據(jù)而不是在前面或中間,并且需要隨機地訪問其中的元素時,使用ArrayList會提供比較好的性能;
而訪問鏈表中的某個元素時,就必須從鏈表的一端開始沿著連接方向一個一個元素地去查找,直到找到所需的元素為止,所以,當你的操作是在一列數(shù)據(jù)的前面或中間添加或刪除數(shù)據(jù),并且按照順序訪問其中的元素時,就應該使用LinkedList了。
如果在編程中,兩種情形交替出現(xiàn),這時,可以考慮使用List這樣的通用接口,而不用關心具體的實現(xiàn),在具體的情形下,它的性能由具體的實現(xiàn)來保證。
Java中每個鏈表實際上是雙重鏈表。鏈表是有序的。List接口和實現(xiàn)了該接口的LinkedList類。
interface ListIterator<E> extends Iterator<E>
ListIterator中的add方法,添加元素在迭代器之前,remove方法刪除上一個被訪問的元素。Set方法取代使用next或previous方法最后訪問的元素。
ArrayList封裝了一個動態(tài)重新分配的數(shù)組。
Vector類的所有方法都是同步的。可以用兩個線程安全地訪問Vector對象。代碼會在同步操作上浪費相當多的時間。ArrayList類的方法不是同步的。
hashCode()方法必須和equals方法相兼容。如果a.equals(b)為ture,則a和b必有相同的散列碼。散列嗎是通過對象實例字段產(chǎn)生的整數(shù)。
TreeSet是一個有序集合,插入時可以是任意順序,輸出時為排序后的順序。紅黑樹。默認情況下,TreeSet假設你插入的元素實現(xiàn)了Comparable接口。
publicinterface Comparable<T> {
publicint compareTo(T o);
}
PriorityQueue是一種能夠在以任意順序插入元素后,再按排序順序讀取這些元素的數(shù)據(jù)結構。優(yōu)先級隊列和TreeSet一樣,其所持有的元素可以是實現(xiàn)了Comparable接口的類的對象,也可以是在構造器中提供的Comparator對象。
HashMap和TreeMap都實現(xiàn)了Map接口,映射表用于存放鍵/值對。
HashSet類,實現(xiàn)了基于散列表的散列集。不存在重復元素的集合。
散列映射表用于對鍵進行散列,樹狀映射表對于鍵的全局順序進行排序,并組成搜索樹。
框架就是一個類集合,它形成了創(chuàng)建高級功能的基礎。框架包含許多超類,這些超類擁有非常有用的功能、策略和機制。框架用戶建立的子類可以擴展類的功能,而不是重新創(chuàng)建基本的機制。
兩個用于集合的基本接口,Collection和Map。
Set接口和Collection接口,Set不允許有重復元素。List接口提供隨機訪問的方法,ArrayList和LiknkedList的訪問算法效率是不同的。