標籤:
類集:在C++中叫做容器(container),而在Java中叫做類集
Collection(類集):最基本的集合介面,一個Collection代表一組Object集合。Collection(類集)特形: 1、 元素(Elements)存放:
- 可以存放相同的Elements;
- 不可以存放相同的Elements;
2、 元素(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介面就可以完成定位了.
Java Collection(集合)簡析