List接口、Set接口和Map接口


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

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM