Java 集合类图(转)
1.java集合類圖
1.1
1.2
上述類圖中,實線邊框的是實現類,比如ArrayList,LinkedList,HashMap等,折線邊框的是抽象類,比如AbstractCollection,AbstractList,AbstractMap等,而點線邊框的是接口,比如Collection,Iterator,List等。
發現一個特點,上述所有的集合類,都實現了Iterator接口,這是一個用于遍歷集合中元素的接口,主要包含hashNext(),next(),remove()三種方法。它的一個子接口LinkedIterator在它的基礎上又添加了三種方法,分別是add(),previous(),hasPrevious()。也就是說如果是先Iterator接口,那么在遍歷集合中元素的時候,只能往后遍歷,被遍歷后的元素不會在遍歷到,通常無序集合實現的都是這個接口,比如HashSet,HashMap;而那些元素有序的集合,實現的一般都是LinkedIterator接口,實現這個接口的集合可以雙向遍歷,既可以通過next()訪問下一個元素,又可以通過previous()訪問前一個元素,比如ArrayList。
還有一個特點就是抽象類的使用。如果要自己實現一個集合類,去實現那些抽象的接口會非常麻煩,工作量很大。這個時候就可以使用抽象類,這些抽象類中給我們提供了許多現成的實現,我們只需要根據自己的需求重寫一些方法或者添加一些方法就可以實現自己需要的集合類,工作流昂大大降低。
1.3
Java的集合類主要由兩個接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,這兩個接口又包含了一些接口或實現類。
Set和List接口是Collection接口派生的兩個子接口,Queue是Java提供的隊列實現,類似于List。
Map實現類用于保存具有映射關系的數據(key-value)。
Set、List和Map可以看做集合的三大類。
List集合是有序集合,集合中的元素可以重復,訪問集合中的元素可以根據元素的索引來訪問。
Set集合是無序集合,集合中的元素不可以重復,訪問集合中的元素只能根據元素本身來訪問(也是不能集合里元素不允許重復的原因)。
Map集合中保存Key-value對形式的元素,訪問時只能根據每項元素的key來訪問其value。
Vector:
用ArrayList代替Vector。Vector是線程安全的,而有的時候我們確實希望在多線程的情況下使用列表,那么這個時候我們可以利用Collections這個類當中為我們提供的synchronizedList(List list),它可以返回一個線程安全的同步的列表,還提供了返回同步的Collections。
Hashtable:
用HashMap代替Hashtable。Hashtable是線程安全的,而有的時候我們確實希望在多線程的情況下使用HashMap,那么這個時候我們可以利用Collections這個類當中為我們提供的synchronizedMap(Map<K,V> m),它可以返回一個線程安全的同步的HashMap
Stack:
用LinkedList代替Stack。當初在設計Stack的時候就有一些潛在的問題,它是從Vector繼承而來,對于一個棧來說,它只能是最后放進去的元素,要先出來,但是它繼承自Vector,而Vector中有一個方法叫做elementAt(int index),而不能說是通過這個索引index去任意的獲得一個元素。結果它就有了這個奇怪的特性,提倡應該自己利用LinkedList去實現一個stack。
對于Set、List和Map三種集合,最常用的實現類分別是HashSet、ArrayList和HashMap三個實現類。(并發控制的集合類,以后有空研究下)。
努力奮斗的小墨魚 ---- http://www.cnblogs.com/WayneZeng/
總結
以上是生活随笔為你收集整理的Java 集合类图(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构与算法(一)——排序
- 下一篇: 【转】小程序图片裁剪组件