類集:在C++中叫作容器(container),而在Java中叫作類集算法
Collection(類集):最基本的集合接口,一個Collection表明一組Object集合。
Collection(類集)特形:
一、 元素(Elements)存放:
- 能夠存放相同的Elements;
- 不能夠存放相同的Elements;
二、 元素(Elements)順序:
Collection(類集)優勢:
- 程序處理對象組的方法標準化;
- 高性能;對基本類集(動態數組,連接表,樹和散列表)的實現是高效率的。通常不多須要人工去對這些「數據引擎」編寫代碼。
- 容許不一樣類型的類集以相同的方式和高度互操做方式工做;
- 容易擴展和/或修改;
- 擁有將標準數組融合到類集框架中的機制;
- 算法操做簡單;類集算法在Collections類中被定義爲靜態方法(如:max、min、reverse.......),所以它們能夠被全部的類集所利用。
- 類集元素(Elements)訪問簡單。iterator提供了一個多用途,標準化的方法,經過由Iterator定義的方法,任一類集類的元素都能被訪問到。
集合框架:就是一個用來表示和操做集合的統一的架構,包含了實現集合的接口與類。
- Collection:集合層次中的根接口,JDK沒有提供這個接口直接的實現類。
- List:是一個有序的集合,能夠包含重複的元素。提供了按索引訪問的方式。
ArrayList:能夠通俗的理解可以自動增加容量的數組。
LinkedList:能夠通谷的理解爲存放Entry對象的雙向循環鏈表。
- Set:不能包含重複的元素。SortedSet是一個按照升序排列元素的Set。
HashSet:能夠通俗的理解爲隨意的向集合中拋對象,集合中的對象是無序的;
LinkedHashSet:能夠通俗的理解爲隨意的向集合中拋對象,集合中的對象是按拋進的前後順序進行鏈表排序的;
TreeSet:能夠通俗的理解爲隨意的向集合中拋對象,集合中的對象是根據指定比較器進行排序的;
- Map:包含了key-value對。Map不能包含重複的key。SortedMap是一個按照升序排列key的Map。
HashMap:能夠通俗的理解爲存放不一樣標記(Key)的對象(Value)的集合;
TreeMap:能夠通俗的理解爲存放不一樣標記(Key)的對象(Value)的集合並按標記(Key)經過指定比較器進行排序。
注:
1. HashSet是經過HashMap實現的,TreeSet是經過TreeMap實現的,只不過Set用的只是Map的key 2. Map的key和Set都有一個共同的特性就是集合的惟一性.TreeMap更是多了一個排序的功能. 3. hashCode和equal()是HashMap用的, 由於無需排序因此只須要關注定位和惟一性便可. a. hashCode是用來計算hash值的,hash值是用來肯定hash表索引的. b. hash表中的一個索引處存放的是一張鏈表, 因此還要經過equal方法循環比較鏈上的每個對象才能夠真正定位到鍵值對應的Entry. c. put時,若是hash表中沒定位到,就在鏈表前加一個Entry,若是定位到了,則更換Entry中的value,並返回舊value 4. 因爲TreeMap須要排序,因此須要一個Comparator爲鍵值進行大小比較.固然也是用Comparator定位的. a. Comparator能夠在建立TreeMap時指定 b. 若是建立時沒有肯定,那麼就會使用key.compareTo()方法,這就要求key必須實現Comparable接口. c. TreeMap是使用Tree數據結構實現的,因此使用compare接口就能夠完成定位了.