Map根據Value排序
說道Map排序,大家第一時間想到的是,利用現成的TreeMap,它會自動根據Map的Key進行排序。
但是如果要按照Map的Value進行排序呢?api沒有提供現成的實現,只能自己實現了。有以下幾個核心元件。
1,Comparator
要想自定義排序肯定少不了Comparator,在compare方法裡面實現自己的排序邏輯,這裡正是借用了Comparator。
2,Map.Entry
想對Map的Value排序,能抽取出相應資料結構嗎?Map裡面的資料結構其實是一個個的Entry,我們可以利用Map提供的api獲取到整個Map的Entry的集合。
3,Collections.sort(List<Map.Entry >, Comparator<Map.Entry >)
有了Comparator,再將Map.Entry 放進List,就可以利用Collections的sort對List裡面的元素進行排序了。
針對Entry實現自己的排序邏輯:
測試:
結果:
但是如果要按照Map的Value進行排序呢?api沒有提供現成的實現,只能自己實現了。有以下幾個核心元件。
1,Comparator
要想自定義排序肯定少不了Comparator,在compare方法裡面實現自己的排序邏輯,這裡正是借用了Comparator。
2,Map.Entry
想對Map的Value排序,能抽取出相應資料結構嗎?Map裡面的資料結構其實是一個個的Entry
3,Collections.sort(List<Map.Entry
有了Comparator,再將Map.Entry
針對Entry
點選(此處)摺疊或開啟
-
private static class ValueComparator implements Comparator<Map.Entry<String, Integer>> {
-
@Override
-
public int compare(Entry<String, Integer> entry1, Entry<String, Integer> entry2) {
-
return entry2.getValue() - entry1.getValue();
-
}
- }
測試:
點選(此處)摺疊或開啟
-
public static void main(String[] args) {
-
Map<String, Integer> map = new HashMap<String, Integer>();
-
map.put("a", 2);
-
map.put("b", 4);
-
map.put("c", 1);
-
map.put("d", 5);
-
map.put("e", 3);
-
-
List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>();
-
list.addAll(map.entrySet());
-
Collections.sort(list, new ValueComparator());
-
-
for (Map.Entry<String, Integer> entry : list) {
-
System.out.println(entry.getValue());
-
}
- }
結果:
點選(此處)摺疊或開啟
-
5
-
4
-
3
-
2
- 1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-1578145/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java中Map根據Map的value取keyJava
- 根據key集合批次從map中獲取value
- map自定義排序,根據鍵或者值排隊排序
- Dictionary key 根據ASCII排序並拼接key和value並HMACMD5-iOSASCII排序MacACMiOS
- Map按照key和value進行排序排序
- js根據時間排序JS排序
- List根據時間排序排序
- java8 實現map以value值排序Java排序
- JavaScript 根據物件鍵值進行排序JavaScript物件排序
- 根據陣列中物件進行排序陣列物件排序
- 城市列表-根據拼音首字母排序排序
- Java : List中 根據map的某個key去重Java
- php 陣列根據元素從小到大排序PHP陣列排序
- Laravel 根據 relation sum 結果排序的小技巧Laravel排序
- 二維陣列根據欄位進行排序陣列排序
- 二維陣列根據某個欄位排序陣列排序
- python根據字典內的值實現排序Python排序
- 【資料】Arraylist中根據指定元素屬性排序排序
- 二維陣列根據鍵的值進行排序陣列排序
- js記一個根據欄位排序物件函式JS排序物件函式
- 根據字典中值得大小,對字典中的項排序排序
- PHP二維陣列根據某個欄位排序PHP陣列排序
- (樹)根據排序陣列或者排序連結串列重新構建BST樹排序陣列
- SpringJpa @query 中根據傳入引數(欄位)排序Spring排序
- map切片排序排序
- 根據數字二進位制下 1 的數目排序排序
- 根據提示操作
- 快速獲取json鍵值對的key名和快速根據value分組JSON
- 記一次陣列操作:陣列 A 根據陣列 B 排序陣列排序
- Java交換map的key和value值Java
- 力扣 根據數字二進位制下1的數目排序力扣排序
- 微信小程式-如何在map上根據經緯度新增標記點(附原始碼)微信小程式原始碼
- Android 解決Map根據地址返回經緯度方法getFromLocationName()不能正常執行Android
- map/reduce實現 排序排序
- 根據Interceptor 分析 OkHttp(一)HTTP
- 根據ip獲取城市
- java 根據日期取得星期Java
- 根據欄位查表名