1.集合
collection(單列集合)
list(有序,可重複)
arraylist
底層資料結構是陣列,查詢快,增刪慢
執行緒不安全,效率高
vector
底層資料結構是陣列,查詢快,增刪慢
執行緒安全,效率低
linkedlist
底層資料結構是鍊錶,查詢慢,增刪快
執行緒不安全,效率高
set(無序,唯一)
hashset
底層資料結構是雜湊表。
雜湊表依賴兩個方法:hashcode()和equals()
執行順序:
首先判斷hashcode()值是否相同
是:繼續執行equals(),看其返回值
是true:說明元素重複,不新增
是false:就直接新增到集合
否:就直接新增到集合
最終:自動生成hashcode()和equals()即可
linkedhashset
底層資料結構由鍊錶和雜湊表組成。
由鍊錶保證元素有序。
由雜湊表保證元素唯一。
treeset
底層資料結構是紅黑樹。(是一種自平衡的二叉樹)
如何保證元素唯一性呢?
根據比較的返回值是否是0來決定
如何保證元素的排序呢?
兩種方式
自然排序(元素具備比較性)
讓元素所屬的類實現comparable介面
比較器排序(集合具備比較性)
讓集合接收乙個comparator的實現類物件
map(雙列集合)
a:map集合的資料結構僅僅針對鍵有效,與值無關。
b:儲存的是鍵值對形式的元素,鍵唯一,值可重複。
hashmap
底層資料結構是雜湊表。執行緒不安全,效率高
雜湊表依賴兩個方法:hashcode()和equals()
執行順序:
首先判斷hashcode()值是否相同
是:繼續執行equals(),看其返回值
是true:說明元素重複,不新增
是false:就直接新增到集合
否:就直接新增到集合
最終:自動生成hashcode()和equals()即可
linkedhashmap
底層資料結構由鍊錶和雜湊表組成。
由鍊錶保證元素有序。
由雜湊表保證元素唯一。
hashtable
底層資料結構是雜湊表。執行緒安全,效率低
雜湊表依賴兩個方法:hashcode()和equals()
執行順序:
首先判斷hashcode()值是否相同
是:繼續執行equals(),看其返回值
是true:說明元素重複,不新增
是false:就直接新增到集合
否:就直接新增到集合
最終:自動生成hashcode()和equals()即可
treemap
底層資料結構是紅黑樹。(是一種自平衡的二叉樹)
如何保證元素唯一性呢?
根據比較的返回值是否是0來決定
如何保證元素的排序呢?
兩種方式
自然排序(元素具備比較性)
讓元素所屬的類實現comparable介面
比較器排序(集合具備比較性)
讓集合接收乙個comparator的實現類物件
2:到底使用那種集合:看需求
是否是鍵值物件形式:
是:map
鍵是否需要排序:
是:treemap
否:hashmap
不知道,就使用hashmap。
否:collection
元素是否唯一:
是:set
元素是否需要排序:
是:treeset
否:hashset
不知道,就使用hashset
否:list
要安全嗎:
是:vector(其實我們也不用它,後面我們講解了多執行緒以後,我在給你回顧用誰)
否:arraylist或者linkedlist
增刪多:linkedlist
查詢多:arraylist
不知道,就使用arraylist
不知道,就使用arraylist
3:集合的常見方法及遍歷方式
collection:
add()
remove()
contains()
iterator()
size()
遍歷:增強for
迭代器|--list
get()
遍歷:普通for
|--set
map:
put()
remove()
containskey(),containsvalue()
keyset()
get()
value()
entryset()
size()
遍歷:根據鍵找值
根據鍵值對物件分別找鍵和值
4.要求: Day1 兩數之和
題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1...
Day 10 兩數相加
給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...
Day8 兩數之和
演算法目錄 示例 1 輸入 nums 2,7,11,15 target 9 輸出 0,1 解釋 因為 nums 0 nums 1 9 返回 0,1 示例 2 輸入 nums 3,2,4 target 6 輸出 1,2 示例 3 輸入 nums 3,3 target 6 輸出 0,1 考察知識點 陣列...