黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java中treemap原理介紹

Java中treemap原理介紹

更新時(shí)間:2020-08-24 16:57:37 來源:動(dòng)力節(jié)點(diǎn) 瀏覽5331次

一、TreeMap介紹

TreeMap是一個(gè)有序的key-value集合,它是通過紅黑樹實(shí)現(xiàn)的。

TreeMap繼承于AbstractMap,所以它是一個(gè)Map,即一個(gè)key-value集合。

TreeMap實(shí)現(xiàn)了NavigableMap接口,意味著它支持一系列的導(dǎo)航方法。比如返回有序的key集合。

TreeMap實(shí)現(xiàn)了Cloneable接口,意味著它能被克隆。

TreeMap實(shí)現(xiàn)了java.io.Serializable接口,意味著它支持序列化

TreeMap基于紅黑樹(Red-Black tree)實(shí)現(xiàn)。該映射根據(jù)其鍵的自然順序進(jìn)行排序,或者根據(jù)創(chuàng)建映射時(shí)提供的Comparator進(jìn)行排序,具體取決于使用的構(gòu)造方法。

TreeMap的基本操作containsKey、get、put和remove的時(shí)間復(fù)雜度是log(n)。

另外,TreeMap是非同步的。它的iterator方法返回的迭代器是fail-fastl的。

java treemap原理

二、紅黑樹(Red Black Tree)

是一種自平衡二叉查找樹

(1)檢索效率O(log n)

(2)紅黑樹的五點(diǎn)規(guī)定:

a每個(gè)節(jié)點(diǎn)都只能是紅色或者黑色

b根節(jié)點(diǎn)是黑色

c每個(gè)葉節(jié)點(diǎn)(NIL節(jié)點(diǎn),空節(jié)點(diǎn))是黑色的。

d從每個(gè)葉子到根的所有路徑上不能有兩個(gè)連續(xù)的紅色節(jié)點(diǎn)。

e從任一節(jié)點(diǎn)到其每個(gè)葉子的所有路徑都包含相同數(shù)目的黑色節(jié)點(diǎn)。

三、TreeMap使用舉例

TreeMap默認(rèn)按照key遞增排序

public?class?Main?{
?public?static?void?main(String[]?args)?{
?TreeMap?treeMap?=?new?TreeMap<>();
?TreeMap?treeMap1?=?new?TreeMap<>();
?treeMap.put(7,?"h");
?treeMap.put(8,?"g");
?treeMap.put(9,?"f");
?treeMap.put(10,?"e");
?treeMap.put(14,?"a");
?treeMap.put(1,?"w");
?treeMap.put(2,?"v");
?treeMap.put(3,?"u");
?treeMap.put(11,?"d");
?treeMap.put(12,?"c");
?treeMap.put(13,?"b");
?treeMap.put(4,?"k");
?treeMap.put(5,?"j");
?treeMap.put(6,?"i");
?System.out.println("----------------------*------------------------------");
?while?(treeMap.size()?!=?0)?{
?//treemap自動(dòng)按照key進(jìn)行遞增排序
?System.out.println(treeMap.firstEntry().getKey()?+?"?-?"?+?treeMap.firstEntry().getValue());
?treeMap1.put(treeMap.firstEntry().getValue(),?treeMap.firstEntry().getKey());
?treeMap.remove(treeMap.firstKey());
?}
?System.out.println("----------------------*------------------------------");
?while?(treeMap1.size()?!=?0)?{
?//treemap自動(dòng)按照key進(jìn)行遞增排序
?System.out.println(treeMap1.firstEntry().getKey()?+?"?-?"?+?treeMap1.firstEntry().getValue());
?treeMap1.remove(treeMap1.firstKey());
?}
?System.out.println("----------------------*------------------------------");
?}
}


得到結(jié)果:

----------------------*------------------------------
1?-?w
2?-?v
3?-?u
4?-?k
5?-?j
6?-?i
7?-?h
8?-?g
9?-?f
10?-?e
11?-?d
12?-?c
13?-?b
14?-?a
----------------------*------------------------------
a?-?14
b?-?13
c?-?12
d?-?11
e?-?10
f?-?9
g?-?8
h?-?7
i?-?6
j?-?5
k?-?4
u?-?3
v?-?2
w?-?1

以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對“Java中treemap原理介紹”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

提交申請后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日本免费一区二区三区看片 | 性欧美.video.free | 日韩欧美一二三区 | 欧美午夜视频一区二区 | 人人干夜夜操 | 手机看片国产免费永久 | 99在线精品日韩一区免费国产 | 日韩欧美网 | 亚洲国产精品久久久久久网站 | 午夜一级黄色片 | 羞羞视频免费观看网站 | 午夜精品影院 | 天天夜夜骑 | 国产你懂的在线观看 | 五月香婷 | 精品卡1卡2卡三卡免费网站 | 成人免费网站在线观看 | 亚洲免费福利 | 最近2019免费中文字幕6 | 欧美在线精品一区二区在线观看 | 亚洲一区二区三区高清不卡 | 免费一级欧美片片线观看 | 中文字幕在线播放视频 | 国产高清视频一区二区 | 日本的黄色录像 | 91久久精一区二区三区大全 | 日本一区二区三区在线观看视频 | 成人国产精品一级毛片视频 | 看全色黄大色黄大片 视 | 多人伦交性欧美精品欧 | 污黄视频网站 | 久久亚洲国产的中文 | 一级特黄aaaaaa大片 | 精品日韩二区三区精品视频 | 国产偷倩视频 | 一级毛片高清免费播放 | 免费在线观看的黄色网址 | 动漫美女胸被狂揉扒开吃奶动态图 | 麻豆果冻传媒新剧国产短视频 | 国产成人综合一区精品 | 欧美 日韩 中文 |