在上一篇文章中斤葱,我們介紹了HashSet.今天我們就來介紹一下LinkedHashSet.
其實(shí)HashSet和LinkedHashSet的關(guān)系,就跟HashMap和LinkedHashMap的關(guān)系一樣.
LinkedHashSet是通過實(shí)例化一個(gè)LinkedHashMap來實(shí)現(xiàn)按序訪問绵患,只不過LinkedHashSet不允許我們指定按照哪種順序進(jìn)行排序,而只是默認(rèn)按照元素插入的順序排序.
關(guān)于LinkedHashMap的實(shí)現(xiàn)原理棍掐,請參考我的文章:Java集合框架源碼研讀-LinkedHashMap.
我們看LinkedHashMap的源碼藏雏,從中根本就看不到跟存儲(chǔ)元素插入順序相關(guān)的任何數(shù)據(jù)結(jié)構(gòu).
其實(shí),其實(shí)現(xiàn)的重點(diǎn)在于其構(gòu)造函數(shù)上,我們看一下其構(gòu)造函數(shù):
由于LinkedHashSet的父類是HashSet,所以我們查看一下HashSet中相關(guān)的構(gòu)造函數(shù):
看到了吧?就是初始化的一個(gè)LinkedHashMap.