1. 程式人生 > >java學習筆記(16)

java學習筆記(16)

Set集合(理解)
(1)Set集合的特點
無序,唯一
(2)HashSet集合(掌握)
A:底層資料結構是雜湊表(是一個元素為連結串列的陣列)
B:雜湊表底層依賴兩個方法:hashCode()和equals()
執行順序:
首先比較雜湊值是否相同
相同:繼續執行equals()方法
返回true:元素重複了,不新增
返回false:直接把元素新增到集合
不同:就直接把元素新增到集合
C:如何保證元素唯一性的呢?
由hashCode()和equals()保證的
D:開發的時候,程式碼非常的簡單,自動生成即可。
E:HashSet儲存字串並遍歷
F:HashSet儲存自定義物件並遍歷(物件的成員變數值相同即為同一個元素)
(3)TreeSet集合
A:底層資料結構是紅黑樹(是一個自平衡的二叉樹)
B:保證元素的排序方式
a:自然排序(元素具備比較性)
讓元素所屬的類實現Comparable介面
b:比較器排序(集合具備比較性)
讓集合構造方法接收Comparator的實現類物件
C:把我們講過的程式碼看一遍即可
(4)案例:
A:獲取無重複的隨機數
B:鍵盤錄入學生按照總分從高到底輸出

3:Collection集合總結(掌握)
Collection
|–List 有序,可重複
|–ArrayList
底層資料結構是陣列,查詢快,增刪慢。
執行緒不安全,效率高
|–Vector
底層資料結構是陣列,查詢快,增刪慢。
執行緒安全,效率低
|–LinkedList
底層資料結構是連結串列,查詢慢,增刪快。
執行緒不安全,效率高
|–Set 無序,唯一
|–HashSet
底層資料結構是雜湊表。
如何保證元素唯一性的呢?
依賴兩個方法:hashCode()和equals()
開發中自動生成這兩個方法即可
|–LinkedHashSet
底層資料結構是連結串列和雜湊表
由連結串列保證元素有序
由雜湊表保證元素唯一
|–TreeSet
底層資料結構是紅黑樹。
如何保證元素排序的呢?
自然排序
比較器排序
如何保證元素唯一性的呢?
根據比較的返回值是否是0來決定

4:針對Collection集合我們到底使用誰呢?(掌握)
唯一嗎?
是:Set
排序嗎?
是:TreeSet
否:HashSet
如果你知道是Set,但是不知道是哪個Set,就用HashSet。

否:List
要安全嗎?
是:Vector
否:ArrayList或者LinkedList
查詢多:ArrayList
增刪多:LinkedList
如果你知道是List,但是不知道是哪個List,就用ArrayList。

如果你知道是Collection集合,但是不知道使用誰,就用ArrayList。

如果你知道用集合,就用ArrayList。

5:在集合中常見的資料結構(掌握)
ArrayXxx:底層資料結構是陣列,查詢快,增刪慢
LinkedXxx:底層資料結構是連結串列,查詢慢,增刪快
HashXxx:底層資料結構是雜湊表。依賴兩個方法:hashCode()和equals()
TreeXxx:底層資料結構是二叉樹。兩種方式排序:自然排序和比較器排序