Java LinkedHashMap的实现原理详解
1.??? LinkedHashSet概述:
???LinkedHashSet是具有可預(yù)知迭代順序的Set接口的哈希表和鏈接列表實(shí)現(xiàn)。此實(shí)現(xiàn)與HashSet的不同之處在于,后者維護(hù)著一個(gè)運(yùn)行于所有條目的雙重鏈接列表。此鏈接列表定義了迭代順序,該迭代順序可為插入順序或是訪問(wèn)順序。
???注意,此實(shí)現(xiàn)不是同步的。如果多個(gè)線程同時(shí)訪問(wèn)鏈接的哈希Set,而其中至少一個(gè)線程修改了該Set,則它必須保持外部同步。
?
2.??? LinkedHashSet的實(shí)現(xiàn):
???對(duì)于LinkedHashSet而言,它繼承與HashSet、又基于LinkedHashMap來(lái)實(shí)現(xiàn)的。
???LinkedHashSet底層使用LinkedHashMap來(lái)保存所有元素,它繼承與HashSet,其所有的方法操作上又與HashSet相同,因此LinkedHashSet?的實(shí)現(xiàn)上非常簡(jiǎn)單,只提供了四個(gè)構(gòu)造方法,并通過(guò)傳遞一個(gè)標(biāo)識(shí)參數(shù),調(diào)用父類的構(gòu)造器,底層構(gòu)造一個(gè)LinkedHashMap來(lái)實(shí)現(xiàn),在相關(guān)操作上與父類HashSet的操作相同,直接調(diào)用父類HashSet的方法即可。LinkedHashSet的源代碼如下:
Java代碼??
???在父類HashSet中,專為L(zhǎng)inkedHashSet提供的構(gòu)造方法如下,該方法為包訪問(wèn)權(quán)限,并未對(duì)外公開(kāi)。
Java代碼??
????由上述源代碼可見(jiàn),LinkedHashSet通過(guò)繼承HashSet,底層使用LinkedHashMap,以很簡(jiǎn)單明了的方式來(lái)實(shí)現(xiàn)了其自身的所有功能。
轉(zhuǎn)自:http://zhangshixi.iteye.com/blog/673319
總結(jié)
以上是生活随笔為你收集整理的Java LinkedHashMap的实现原理详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java HashSet的实现原理详解
- 下一篇: java美元兑换,(Java实现) 美元