標籤:添加 索引 inf ffffff 資料 table c99 適用於 tor
(一)集合與數組
數組:(存基礎資料型別 (Elementary Data Type))-->存對象的一種容器,長度固定,【不適合在對象數量未知的情況下使用】
集合:(存對象,物件類型可以不一樣)-->長度可變,可在多數情況下使用。
(二)層次關係
1.0 :圖中,實線邊框的是實作類別,折線邊框的是抽象類別,而點線邊框的是介面:
2.0 其中集合的 詳解
①Collection介面【集合類 ”根介面“;Java中沒有這個介面的直接實作類別】----(有兩個兒子)---->
List:(有序、重複)--(又有倆兒兒子)-->
ArrayList:底層資料結構--->【動態數組 ;線程不安全,效率高】--->查詢快,增刪慢【移動所有資料】。
LinkedList :底層資料結構--->【鏈表;線程不安全,效率高】--->查詢慢,增刪快。【特別適用於批量插入、刪除資料】
Vector:底層資料結構--->【數組;安全執行緒,效率低】-->查詢快,增刪慢
Set:(無序、唯一)--->提供了按索引訪問的方式。
HashSet:底層結構--->【雜湊表---依賴倆兒方法->hashCode()和equals()】(一般規則:對象equals 是true的話,hashCode需要相同,但是hashCode相同的對象不一定equals,這就是所謂的衝突現象,但是有不同的衝突解決方案。你的hashCode()設計的好的話衝突也就小了。比如樓上給出的超出int範圍之後這種hashCode()實現,對象肯定是無數的,但是hash實現是有限的呢,所以衝突了。)
TreeSet: 底層結構--->【紅/黑樹狀結構】:一種自平衡的二叉樹。傳回值是否為0-->唯一性;
LinkedHashSet【有序,不重複】:底層結構--->【鏈表和雜湊表】鏈表保證有序;雜湊表保證-->唯一
②Map:(索引值對、鍵唯一、值不唯一)與Collection介面獨立的,另一個介面。--->Map包含了key-value對。Map不重複的key,但可有相同的value。
HashMap:底層結構-->【雜湊表;線程不安全,效率高--依賴倆兒方法-->hashCode()和equals()判斷是否添加到集合】
Hashtable:底層結構--->【雜湊表;安全執行緒效率低】-->依賴倆兒方法->hashCode()和equals()
LinkedHashMap: 底層結構--->【鏈表和雜湊表】:鏈表保證有序;雜湊表保證唯一。
TreeMap: 底層結構--->【紅/黑樹狀結構】傳回值是否為0-->唯一性
③Iterator:所有的集合類-->都實現這個介面。【遍曆集合中元素的介面】用法:
(1)hasNext()是否還有下一個元素。
(2)next()返回下一個元素。
(3)remove()刪除當前元素。
3.0 幾種重要介面和類的對比:
Java中各種集合總結(一)