HashMap根據value值排序


/**
* hashMap排序
* @author lizhibiao
* @date 2018/12/3 11:47
*/
public class TestHashMapCollections
{
public static void main(String[] args)
{
Map<String, Integer> map = new HashMap<>();
map.put("王二", 8);
map.put("沈吳", 2);
map.put("小菜", 3);
map.put("大鳥", 1);

Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
for (Map.Entry s : entrySet)
{
System.out.println(s.getKey()+"--"+s.getValue());
}

System.out.println("============排序后============");

//////借助list實現hashMap排序//////

//注意 ArrayList<>() 括號里要傳入map.entrySet()
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>()
{
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2)
{
//按照value值,重小到大排序
// return o1.getValue() - o2.getValue();

//按照value值,從大到小排序
// return o2.getValue() - o1.getValue();

//按照value值,用compareTo()方法默認是從小到大排序
return o1.getValue().compareTo(o2.getValue());
}
});

//注意這里遍歷的是list,也就是我們將map.Entry放進了list,排序后的集合
for (Map.Entry s : list)
{
System.out.println(s.getKey()+"--"+s.getValue());
}

}
}


輸出結果如下:
沈吳--2
大鳥--1
小菜--3
王二--8
============排序后============
大鳥--1
沈吳--2
小菜--3
王二--8


有疑問,掃我二維碼添加微信,歡迎騷擾!
堅持做一件事,一起學習。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM