1、List和Set介面繼承自Collection介面,而Map不是繼承的Collection介面 2.、List介面 List介面有三個實現類:LinkedList,ArrayList,Vector LinkedList:底層基於鏈表實現,鏈表記憶體是散亂的,每一個元素存儲本身記憶體地址的同時還存儲下 ...
1、List和Set介面繼承自Collection介面,而Map不是繼承的Collection介面
Map沒有繼承Collection介面,Map提供key到value的映射;一個Map中不能包含相同key,每個key只能映射一個value;Map介面提供3種集合的視圖,
Map的內容可以被當做一組key集合,一組value集合,或者一組key-value映射;
2.、List介面
元素有放入順序,元素可重覆
List介面有三個實現類:LinkedList,ArrayList,Vector
LinkedList:底層基於鏈表實現,鏈表記憶體是散亂的,每一個元素存儲本身記憶體地址的同時還存儲下一個元素的地址。鏈表增刪快,查找慢
ArrayList和Vector的區別:ArrayList是非線程安全的,效率高;Vector是基於線程安全的,效率低 元素有放入順序,元素可重覆
List是一種有序的Collection,可以通過索引訪問集合中的數據,List比Collection多了10個方法,主要是有關索引的方法。
1).所有的索引返回的方法都有可能拋出一個IndexOutOfBoundsException異常
2).subList(int fromIndex, int toIndex)返回的是包括fromIndex,不包括toIndex的視圖,該列表的size()=toIndex-fromIndex。
所有的List中只能容納單個不同類型的對象組成的表,而不是Key-Value鍵值對。例如:[ tom,1,c ];
- 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];
- 所有的List中可以有null元素,例如[ tom,null,1 ];
- 基於Array的List(Vector,ArrayList)適合查詢,而LinkedList(鏈表)適合添加,刪除操作;
3、Set介面
元素無放入順序,元素不可重覆(註意:元素雖然無放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實是固定的)
Set介面有兩個實現類:HashSet(底層由HashMap實現),LinkedHashSet
SortedSet介面有一個實現類:TreeSet(底層由平衡二叉樹實現)
Query介面有一個實現類:LinkList
Set具有與Collection完全一樣的介面,因此沒有任何額外的功能,不像前面有兩個不同的List。實際上Set就是Collection,只是行為不同。(這是繼承與多態思想的典型應用:表現不同的行為。)Set不保存重覆的元素(至於如何判斷元素相同則較為負責)
Set : 存入Set的每個元素都必須是唯一的,因為Set不保存重覆元素。加入Set的元素必須定義equals()方法以確保對象的唯一性。Set與Collection有完全一樣的介面。Set介面不保證維護元素的次序。
HashSet : 為快速查找設計的Set。存入HashSet的對象必須定義hashCode()。
TreeSet : 保存次序的Set, 底層為樹結構。使用它可以從Set中提取有序的序列。
LinkedHashSet : 具有HashSet的查詢速度,且內部使用鏈表維護元素的順序(插入的次序)。於是在使用迭代器遍歷Set時,結果會按元素插入的次序
4、Map介面
Map介面有三個實現類:HashMap,HashTable,LinkeHashMap
HashMap非線程安全,高效,支持null;
HashTable線程安全,低效,不支持null
SortedMap有一個實現類:TreeMap