DAY15 復習
作業:完成筆記HashMap的相關練習:2.4 練習:字串中字符統計
需求:隨機輸入一串字串,統計這串字串中每個字母的出現次數
筆記鏈接 HashMap
1.List介面的兩個常用實作類
ArrayList的特點:
- List介面的實作類
- 底層的資料結構是陣列,記憶體空間是連續的
- 元素有下標,有序,允許存放重復的操作
- 通常可以根據下標進行操作
- 增刪操作比較慢,查詢操作比較快【資料量大時】
LinkedList的特點:
- List介面的實作類
- 底層的資料結構是鏈表,記憶體空間是不連續的
- 元素有下標,有序,允許存放重復的資料
- 但是通常首尾節點的操作比較多
- 增刪操作比較快,查詢操作比較慢【資料量大時】
注意:LinkedList查詢慢也不是都慢,首尾操作還是比較快的
簡單方法:
void addFirst(E e) 添加首元素
void addLast(E e) 添加尾元素
E removeFirst() 洗掉首元素
E removeLast() 洗掉尾元素
E getFirst() 獲取首元素
E getLast() 獲取尾元素
E element() 獲取首元素
功能一致但是名字不太好記的方法:
boolean offer(E e) 添加尾元素
boolean offerFirst(E e) 添加首元素
boolean offerLast(E e) 添加尾元素
E peek() 獲取首元素
E peekFirst() 獲取首元素
E peekLast() 獲取尾元素
E poll() 回傳并移除頭元素
E pollFirst() 回傳并移除頭元素
E pollLast() 回傳并移除尾元素
2. Map介面
Map介面的特點
- map集合的結構是:鍵值對、KEY與VALUE、Map.Entry<K,V>的映射關系
- map中key值不允許重復,如果重復,對應的value會被覆寫
- map中的映射關系是無序的
- map沒有自己的迭代器,所以迭代時通常需要轉成set集合來迭代
Map集合方法總結
簡單方法:
void clear() 清空集合
boolean equals(Object o) 判斷集合物件與引數o是否相等
int hashCode() 回傳本集合的哈希碼值
boolean isEmpty() 判斷集合是否為空
int size() 回傳本集合中鍵值對的個數
map單個集合間的操作
boolean containsKey(Object key) 判斷map中是否包含指定的key
boolean containsValue(Object value) 判斷map中是否包含指定的value
V get(Object key) 根據指定的key回傳對應的value,如果不存在,回傳null
V remove(Object key) 洗掉本集合中引數key對應的鍵值對
V put(K key, V value) 向集合中添加映射關系(鍵值對)
void putAll(Map<> m) 向本集合中添加m集合的所有映射關系(鍵值對)
map的迭代
Collection values() 把本map中的Value值取出放入一個Collection中并回傳這個Collection
Set keySet() 把本map中的Key值取出放入一個Set集合中并回傳這個Set集合
Set<Map.Entry<K,V>> entrySet()
把本map中的每一對KV都看成是一個Entry,把所有的Entry取出放入一個Set集合中并回傳這個Set集合
HashMap的存盤程序:
- HashMap的結構是陣列+鏈表 或者 陣列+紅黑樹 的形式
- HashMap底層的Entry[ ]陣列,初始容量為16,加載因子是0.75f,擴容按約為2倍擴容
- 當存放資料時,會根據hash(key)%n演算法來計算資料的存放位置,n就是陣列的長度,其實也就是集合的容量
- 當計算到的位置之前沒有存過資料的時候,會直接存放資料
- 當計算的位置,有資料時,會發生hash沖突/hash碰撞
解決的辦法就是采用鏈表的結構,在陣列中指定位置處以后元素之后插入新的元素
也就是說陣列中的元素都是最早加入的節點 - 如果鏈表的長度>8并且陣列長度>64時,鏈表會轉為紅黑樹,當鏈表的長度<6時,會重新恢復成鏈表

3. Set介面
Set介面的特點
set集合沒有重復的元素
set集合的元素是無序的
set集合可以存null值,并且null最多有一個
我們自定義物件如果想去重,需要在自定義類中添加重寫的equals()與hashCode()
集合學習的方法
學習父級的公共方法,學習子類的創建方式,學習各種集合的特點
關于List大多都是與下標有關的操作
關于Set通常都是去重的操作
關于map通常都是映射關系,也就是鍵值對
API要常練習,方法互相之間沒有任何關系,用哪個,查哪個
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/336288.html
標籤:其他
