Map介面和Collection介面以及
阿新 • • 發佈:2019-02-18
Collecttion介面
Collecttion介面分為兩大類Set和List
List介面:List介面又分為ArrayList和LinkedList
ArrayList介面:
特點:1、容量不固定(有最大值,但一般達不到)
2、有序的(元素輸出順序與輸入順序一致)
3、非執行緒安全
4、插入元素的時候可能擴容,刪除元素時不會縮小容量,不使用索引的元素查詢需要遍歷陣列,並使用equals比較
LinkedList介面:
1、 LinkedList以連結串列的形式儲存資料、對增刪元素有很高的效率、查詢效率較低、尤其是隨機訪問、效率不忍直視、
2、 LinkedList繼承AbstractSequentialdList(其繼承與AbstractList、所以要求其子類要實現通過索引操作元素)、使得LinkedList支援使用索引的“增刪改查”操作、
3、LinkedList直接實現了List介面、使其可以內部儲存元素有序並且為每個元素提供索引值、
4、LinkedList直接實現了Deque介面、Deque介面繼承了Queue、使其可以作為雙向連結串列這種資料結構來使用、操作元素。
5、LinkedList直接實現了Cloneable介面、使其可以複製其中的全部元素
6、在使用ObjectOutputStream/ObjectInputStream流時、會先講LinkedList的capacity讀取/寫入到流中、然後將元素一一讀取/寫入
Set介面
HashSet和TreeSet
HashSet介面
特點: HashSet 底層資料結構是雜湊表. HashSet 不是執行緒安全的 集合元素可以是 null
當向 HashSet 集合中存入一個元素時,HashSet 會呼叫該物件的 hashCode() 方法來得到該物件的 hashCode 值,
然後根據 hashCode 值決定該物件在 HashSet 中的儲存位置。
HashSet 集合判斷兩個元素相等的標準:
兩個物件通過 hashCode() 方法比較相等,並且兩個物件的 equals() 方法返回值也相等。
TreeSet介面
特點:TreeSet中儲存的型別必須是一致的,不能一下存int,一下又存string
2、TreeSet在遍歷集合元素時,是有順序的(從小到大)(如果存的字母,按字典序排列)
3、排序:當向TreeSet中新增自定義物件時,有2種排序方法,1:自然排序 2、定製排序 自然排序:要求自定義類實現java.lang.Comparable介面並重寫compareTo(Object obj)方法。在此方法中,指明按照自定義類的哪個屬性進行排序
Map介面
HashMap和TreeMap
HashMap;HashMap 是一個採用雜湊表實現的鍵值對集合,繼承自 AbstractMap,實現了 Map 介面 。
HashMap 的特殊儲存結構使得在獲取指定元素前需要經過雜湊運算,得到目標元素在雜湊表中的位置,然後再進行少量比較即可得到元素.
TreeMap:1.無序,不允許重複(無序指元素順序與新增順序不一致)
2.TreeMap集合預設會對鍵進行排序,所以鍵必須實現自然排序和定製排序中的一種
3…底層使用的資料結構是二叉樹
排序方式:
Map介面儲存一組成對的鍵-值物件,提供key(鍵)到value(值)的對映,Map中的key不要求有序,不允許重複。value同樣不要求有序,但可以重複。最常見的Map實現類是HashMap,他的儲存方式是雜湊表,優點是查詢指定元素效率高。
集合巢狀
ArrryList巢狀HashMap
HashMap巢狀HashMap