java中Map排序的實(shí)現(xiàn)

java中Map排序的實(shí)現(xiàn)

map是鍵值對的集合接口,它的實(shí)現(xiàn)類主要包括:HashMap镇草、TreeMap眶痰、Hashtable以及LinkedHashMap等。其中這四者的區(qū)別如下(簡單介紹):

HashMap:我們最常用的Map梯啤,它根據(jù)key的HashCode 值來存儲數(shù)據(jù),根據(jù)key可以直接獲取它的Value竖伯,同時(shí)它具有很快的訪問速度。HashMap最多只允許一條記錄的key值為Null(多條會覆蓋);允許多條記錄的Value為 Null因宇。非同步的七婴。

TreeMap: 能夠把它保存的記錄根據(jù)key排序,默認(rèn)是按升序排序,也可以指定排序的比較器察滑,當(dāng)用Iterator 遍歷TreeMap時(shí)本姥,得到的記錄是排過序的。TreeMap不允許key的值為null杭棵。非同步的。

Hashtable: 與 HashMap類似,不同的是:key和value的值均不允許為null;它支持線程的同步,即任一時(shí)刻只有一個(gè)線程能寫Hashtable,因此也導(dǎo)致了Hashtale在寫入時(shí)會比較慢魂爪。

LinkedHashMap: 保存了記錄的插入順序先舷,在用Iterator遍歷LinkedHashMap時(shí)馆蠕,先得到的記錄肯定是先插入的.在遍歷的時(shí)候會比HashMap慢嫂丙。key和value均允許為空,非同步的惠险。

在線學(xué)習(xí)課程分享:java課程

Map排序

TreeMap

TreeMap默認(rèn)是升序的撩笆,如果我們需要改變排序方式捺球,則需要使用比較器:Comparator。

Comparator可以對集合對象或者數(shù)組進(jìn)行排序的比較器接口夕冲,實(shí)現(xiàn)該接口的public compare(T o1,To2)方法即可實(shí)現(xiàn)排序氮兵,該方法主要是根據(jù)第一個(gè)參數(shù)o1,小于、等于或者大于o2分別返回負(fù)整數(shù)歹鱼、0或者正整數(shù)泣栈。如下:

運(yùn)行結(jié)果如下:

上面例子是對根據(jù)TreeMap的key值來進(jìn)行排序的,但是有時(shí)我們需要根據(jù)TreeMap的value來進(jìn)行排序弥姻。對value排序我們就需要借助于Collections的sort(List<T> list, Comparator<? super T> c)方法南片,該方法根據(jù)指定比較器產(chǎn)生的順序?qū)χ付斜磉M(jìn)行排序。

但是有一個(gè)前提條件庭敦,那就是所有的元素都必須能夠根據(jù)所提供的比較器來進(jìn)行比較疼进。如下:

運(yùn)行結(jié)果:

HashMap

我們都是HashMap的值是沒有順序的,他是按照key的HashCode來實(shí)現(xiàn)的秧廉。對于這個(gè)無序的HashMap我們要怎么來實(shí)現(xiàn)排序呢伞广?參照TreeMap的value排序,我們一樣的也可以實(shí)現(xiàn)HashMap的排序定血。

運(yùn)行結(jié)果:

更多相關(guān)文章教程推薦:java入門

以上就是java中Map排序的實(shí)現(xiàn)的詳細(xì)內(nèi)容赔癌,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澜沟,一起剝皮案震驚了整個(gè)濱河市灾票,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌茫虽,老刑警劉巖刊苍,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異濒析,居然都是意外死亡正什,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門号杏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來婴氮,“玉大人斯棒,你說我怎么就攤上這事≈骶” “怎么了荣暮?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長罩驻。 經(jīng)常有香客問我穗酥,道長,這世上最難降的妖魔是什么惠遏? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任砾跃,我火速辦了婚禮,結(jié)果婚禮上节吮,老公的妹妹穿的比我還像新娘抽高。我一直安慰自己,他們只是感情好课锌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布厨内。 她就那樣靜靜地躺著,像睡著了一般渺贤。 火紅的嫁衣襯著肌膚如雪雏胃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天志鞍,我揣著相機(jī)與錄音瞭亮,去河邊找鬼。 笑死固棚,一個(gè)胖子當(dāng)著我的面吹牛统翩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播此洲,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼厂汗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了呜师?” 一聲冷哼從身側(cè)響起娶桦,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汁汗,沒想到半個(gè)月后衷畦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡知牌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年祈争,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片角寸。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡菩混,死狀恐怖忿墅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沮峡,我是刑警寧澤球匕,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站帖烘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏橄杨。R本人自食惡果不足惜秘症,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望式矫。 院中可真熱鬧乡摹,春花似錦、人聲如沸采转。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽故慈。三九已至板熊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間察绷,已是汗流浹背干签。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拆撼,地道東北人容劳。 一個(gè)月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像闸度,于是被迫代替她去往敵國和親竭贩。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容