1. 程式人生 > >Java中各種集合總結(一)

Java中各種集合總結(一)

分享圖片 link 抽象類 解決 集合 1.0 分享 arr 抽象

(一)集合與數組

數組:(存基本數據類型)-->存對象的一種容器,長度固定,【不適合在對象數量未知的情況下使用】

集合:(存對象,對象類型可以不一樣)-->長度可變,可在多數情況下使用。

(二)層次關系

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中各種集合總結(一)