Java HashMap兩種簡(jiǎn)便排序方法解析
這篇文章主要介紹了Java HashMap兩種簡(jiǎn)便排序方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
HashMap的儲(chǔ)存是沒(méi)有順序的,而是按照key的HashCode實(shí)現(xiàn).
key=手機(jī)品牌,value=價(jià)格,這里以這個(gè)例子實(shí)現(xiàn)按名稱排序和按價(jià)格排序.
Map phone=new HashMap();
phone.put("Apple",8899);
phone.put("SAMSUNG",7000);
phone.put("Meizu",2698);
phone.put("Xiaomi",1800);
System.out.println(phone);
直接輸出HashMap得到的是一個(gè)無(wú)序Map(不是Arraylist那種順序型儲(chǔ)存)

1. 按key排序
對(duì)名稱進(jìn)行排序,首先要得到HashMap中鍵的集合(keySet),并轉(zhuǎn)換為數(shù)組,這樣才能用Arrays.sort()進(jìn)行排序
Set set=phone.keySet();
Object[] arr=set.toArray();
Arrays.sort(arr);
for(Object key:arr){
System.out.println(key);
}
得到排序好的鍵值

最后利用HashMap.get(key)得到鍵對(duì)應(yīng)的值即可
for(Object key:arr){
System.out.println(key+": "+phone.get(key));
}
得到的打印的結(jié)果

2.按value排序
對(duì)價(jià)格進(jìn)行排序,首先需要得到HashMap中的包含映射關(guān)系的視圖(entrySet),
如圖:

將entrySet轉(zhuǎn)換為L(zhǎng)ist,然后重寫比較器比較即可.這里可以使用List.sort(comparator),也可以使用Collections.sort(list,comparator)
轉(zhuǎn)換為list
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(phone.entrySet()); //轉(zhuǎn)換為list
使用list.sort()排序
list.sort(new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
使用Collections.sort()排序
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
兩種方式結(jié)果輸出
//for循環(huán)
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getKey() + ": " + list.get(i).getValue());
}
//for-each循環(huán)
for (Map.Entry<String, Integer> mapping : list){
System.out.println(mapping.getKey()+": "+mapping.getValue());
}
遍歷打印輸出
//for
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getKey() + ": " +list.get(i).getValue());
}
System.out.println();
//for-each
for (Map.Entry<String, Integer> mapping : list) {
System.out.println(mapping.getKey() + ": " +mapping.getValue());
}
結(jié)果

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解析Tomcat 6、7在EL表達(dá)式解析時(shí)存在的一個(gè)Bug
這篇文章主要是對(duì)Tomcat 6、7在EL表達(dá)式解析時(shí)存在的一個(gè)Bug進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12
java通過(guò)Excel批量上傳數(shù)據(jù)的實(shí)現(xiàn)示例
Excel批量上傳是常見(jiàn)的一種功能,本文就來(lái)介紹一下java通過(guò)Excel批量上傳數(shù)據(jù)的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
Java?代碼本地設(shè)置Hadoop用戶名密碼的方法
在Hadoop環(huán)境中,通常使用Kerberos進(jìn)行身份驗(yàn)證,這篇文章主要介紹了Java?代碼本地設(shè)置Hadoop用戶名密碼的方法,需要的朋友可以參考下2024-08-08
SpringBoot中使用@ControllerAdvice注解詳解
這篇文章主要介紹了SpringBoot中使用@ControllerAdvice注解詳解,@ControllerAdvice,是Spring3.2提供的新注解,它是一個(gè)Controller增強(qiáng)器,可對(duì)controller中被 @RequestMapping注解的方法加一些邏輯處理,需要的朋友可以參考下2023-10-10
Java SpringBoot開(kāi)發(fā)小技巧詳解
這篇文章主要介紹了淺談SpringBoot項(xiàng)目如何讓前端開(kāi)發(fā)提高效率(小技巧),主要介紹了Swagger和Nginx提高效率的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
詳解SpringBoot?調(diào)用外部接口的三種方式
SpringBoot不僅繼承了Spring框架原有的優(yōu)秀特性,而且還通過(guò)簡(jiǎn)化配置來(lái)進(jìn)一步簡(jiǎn)化了Spring應(yīng)用的整個(gè)搭建和開(kāi)發(fā)過(guò)程,這篇文章主要介紹了SpringBoot?調(diào)用外部接口的三種方式,需要的朋友可以參考下2023-04-04
Java設(shè)計(jì)者模式簡(jiǎn)單工廠模式解析
這篇文章主要介紹了Java設(shè)計(jì)者模式簡(jiǎn)單工廠模式解析,介紹了其簡(jiǎn)介,實(shí)例以及優(yōu)缺點(diǎn)分析,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
解決java junit單元測(cè)試@Test報(bào)錯(cuò)的問(wèn)題
今天小編就為大家分享一篇解決java junit單元測(cè)試@Test報(bào)錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11

