Java雙列集合
雙列集合
最近剛學(xué)Java,隨便記點(diǎn)學(xué)習(xí)筆記
雙列集合的特點(diǎn):
雙列集合一次需要存一對(duì)數(shù)據(jù),分別為鍵和值
鍵不能重復(fù),值可以重復(fù)
鍵和值是一一對(duì)應(yīng)的
鍵+值整體稱為"鍵值對(duì)"或"鍵值對(duì)對(duì)象",在java中叫作"Entry"對(duì)象
Map常見API
Map是雙列集合的頂層接口,它的功能是全部雙列集合都可以繼承使用的

Map的遍歷方式
1.鍵找值
2.鍵值對(duì)
3.lambda表達(dá)式
HashMap
HashMap是Map里面的一個(gè)實(shí)現(xiàn)類
沒有額外需要學(xué)習(xí)的特有方法,直接使用Map里面的方法就可以了
特點(diǎn)都是由鍵決定的:無序,不重復(fù),無索引
HashMap和HashSet底層原理是一樣的,都是哈希表結(jié)構(gòu),數(shù)組+鏈表+紅黑樹
以來hashCode方法和equals方法保證鍵的唯一
如果鍵存儲(chǔ)的是自定義對(duì)象,需要重寫hashCode和equals方法
如果值存儲(chǔ)自定義對(duì)象,不需要重寫hashCode和equals方法
LinkedHashMap
由鍵決定:有序,重復(fù),無索引
有序指的是保證存儲(chǔ)和取出的元素順序一致
原理:底層數(shù)據(jù)結(jié)構(gòu)依然是哈希表,還是每個(gè)鍵值對(duì)元素又額外多了一個(gè)雙鏈表的機(jī)制記錄存儲(chǔ)的順序
TreeMap
底層和TreeSet底層原理一樣,都是紅黑樹結(jié)構(gòu)
由鍵決定特性:不重復(fù),無索引,可排序
可排序:對(duì)鍵進(jìn)行排序
注意:默認(rèn)按照鍵的從小到大進(jìn)行排序,也可以自己規(guī)定鍵的排序規(guī)則
代碼書寫兩種排序規(guī)則:
實(shí)現(xiàn)Comparable接口,指定比較規(guī)則
創(chuàng)建集合時(shí)傳遞Comparator比較器對(duì)象,指定比較規(guī)則
統(tǒng)計(jì)思想:利用Map排序
如果題目中沒有要求對(duì)結(jié)果進(jìn)行排序,默認(rèn)使用HashMap
如果要求,則用TreeMap
鍵:要統(tǒng)計(jì)的內(nèi)容
值:次數(shù)
三種雙列集合的選擇
默認(rèn):HashMap
如果要保證存取有序:LinkedHashMap
如果要進(jìn)行排序:TreeMap
可變參數(shù)
如果調(diào)用函數(shù)時(shí)想傳入任意個(gè)參數(shù),可這樣寫:
可變參數(shù)的小細(xì)節(jié):
在方法的形參中最多只能寫一個(gè)可變參數(shù)
在方法當(dāng)中,如果除了可變參數(shù)以外還有其他的形參,那么可變參數(shù)要寫在最后
Collections
java.util.Collections:集合工具類
作用:Collections不是集合,而是集合工具類
常用方法名稱 說明 public static ?boolean addAll(Collection c, T... elements) 批量添加元素 public staticvoid shuffle(List<> list) 打亂List集合元素的順序