1: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:鍵盤錄入學生按照總分從高到底輸出
2:collection集合總結(掌握)
collection
|–list 有序,可重複
|–arraylist
底層資料結構是陣列,查詢快,增刪慢。
執行緒不安全,效率高
|–vector
底層資料結構是陣列,查詢快,增刪慢。
執行緒安全,效率低
|–linkedlist
底層資料結構是鍊錶,查詢慢,增刪快。
執行緒不安全,效率高
|–set 無序,唯一
|–hashset
底層資料結構是雜湊表。
如何保證元素唯一性的呢?
依賴兩個方法:hashcode()和equals()
開發中自動生成這兩個方法即可
|–linkedhashset
底層資料結構是鍊錶和雜湊表
由鍊錶保證元素有序
由雜湊表保證元素唯一
|–treeset
底層資料結構是紅黑樹。
如何保證元素排序的呢?
自然排序
比較器排序
如何保證元素唯一性的呢?
根據比較的返回值是否是0來決定
3:針對collection集合我們到底使用誰呢?(掌握)
唯一嗎?
是:set
排序嗎?
是:treeset
否:hashset
如果你知道是set,但是不知道是哪個set,就用hashset。
4:在集合中常見的資料結構(掌握)否:list
要安全嗎?
是:vector
否:arraylist或者linkedlist
查詢多:arraylist
增刪多:linkedlist
如果你知道是list,但是不知道是哪個list,就用arraylist。
如果你知道是collection集合,但是不知道使用誰,就用arraylist。
如果你知道用集合,就用arraylist。
array***:底層資料結構是陣列,查詢快,增刪慢
linked***:底層資料結構是鍊錶,查詢慢,增刪快
hash***:底層資料結構是雜湊表。依賴兩個方法:hashcode()和equals()
tree***:底層資料結構是二叉樹。兩種方式排序:自然排序和比較器排序
Set集合概述與hashset概述
不包含重複元素 唯一 無序 訪問順序不一致它不保證set的迭代順序,特別是它保證該順序恆久不變 底層資料結構是雜湊表 注意 雖然set集合的元素無序,但是,作為集合來說,它肯定有它自己的儲存順序,而你的順序恰好和它的儲存順序一致,這代表不了有序,你可以多儲存一些資料,就能看到效果。public cl...
Java 基礎Set集合概述及特點
hashset 底層為hashmap。步驟 先看hashcode 值是否相同 相同 繼續走equals 方法 返回true 元素重複不新增 返回false 元素不重複新增 不同 就直接把元素新增到集合 如果類沒有重寫這兩個方法,預設使用object的方法,一般來說不相同.練習 需求 儲存自定義物件,...
Collection集合 (set集合)
不包含重複元素的集合 即使新增重複元素之後,最終也只能顯示乙個 沒有帶索引的方法,所以不能使用普通的for迴圈遍歷 hashset 對集合的迭代順序不作任何保證 object類中有乙個方法可以獲取物件的雜湊值 public int hashcode 返回物件的雜湊碼值 物件的雜湊值特點 同乙個物件多...