日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Map排序

發布時間:2024/4/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Map排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. Map按值排序

我們都知道TreeMap可以按key自動排序,有時候我們也會遇到需要按value排序的情況。首先需要明確的一點是, TreeMap無法完成按value排序的功能因此遇到按值排序的需求沒有必要使用TreeMap, 因為強行使用TreeMap將會按key排序,這個排序過程對我們的需求沒有幫助并且會降低效率。

一個解決問題的思路是,使用HashMap存儲數據,然后大致的思路是把Map的EntrySet轉換成list,然后使用Collections.sort排序, 根據排序需求改寫comparator

代碼如下

1 import java.util.*; 2 3 4 public class Map按值排序 { 5 /* 6 * 大致的思路是把Map的EntrySet轉換成list,然后使用Collections.sort排序, 根據排序需求改寫comparator*/ 7 public static void main(String[] args) { 8 9 Map<String,Integer> map = new HashMap<>(); 10 map.put("a", 4); 11 map.put("d", 3); 12 map.put("b", 2); 13 map.put("c", 1); 14 15 List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet()); 16 //按值的升序排列: 17 //1. 匿名函數寫法: 18 /* Collections.sort(list,new Comparator<Map.Entry<String,Integer>>() { 19 //升序排序 20 public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { 21 return o1.getValue().compareTo(o2.getValue());//升序 22 //return o1.getValue().compareTo(o2.getValue());//降序 23 } 24 });*/ 25 26 //2. lambda表達式寫法: 27 //按value升序 28 //Collections.sort(list, (Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2)->o1.getValue().compareTo(o2.getValue())); 29 //按value降序 30 //Collections.sort(list, (Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2)->o2.getValue().compareTo(o1.getValue())); 31 32 // 3.精簡寫法 默認升序排列,若要按value降序用上面的lambda表達式 33 Collections.sort(list, Comparator.comparing(Map.Entry<String, Integer>::getValue)); 34 35 36 for (Map.Entry<String, Integer> e: list) { 37 System.out.println(e.getKey()+":"+e.getValue()); 38 } 39 40 } 41 }

?

2. TreeMap按key 升序排序

TreeMap在插入數據的時候是可以通過指定比較器來實現不同的按key排序規則的,默認的規則是按key升序排序,下面的程序可以實現按key降序排序:

1 import java.util.Comparator; 2 import java.util.TreeMap; 3 4 public class treeMap按key降序排列 { 5 public static void main(String[] args) { 6 //默認的TreeMap升序排列 7 //重寫comparator完成降序排序 8 // 1.匿名函數 9 /* TreeMap<Integer,Integer> map2= new TreeMap<>(new Comparator<Integer>(){ 10 *//* 11 * int compare(Object o1, Object o2) 返回一個基本類型的整型, 12 * 返回負數表示:o1 小于o2, 13 * 返回0 表示:o1和o2相等, 14 * 返回正數表示:o1大于o2。 15 *//* 16 public int compare(Integer a,Integer b){ 17 return b-a; 18 } 19 });*/ 20 21 // 2.lambda表達式 22 // TreeMap<Integer, Integer> map2 = new TreeMap<>((Integer a, Integer b) -> b - a); 23 // 簡寫 24 TreeMap<Integer, Integer> map2 = new TreeMap<>(Comparator.reverseOrder()); 25 26 map2.put(1, 2); 27 map2.put(2, 4); 28 map2.put(7, 1); 29 map2.put(5, 2); 30 System.out.println("Map2=" + map2); 31 32 } 33 }

?

轉載于:https://www.cnblogs.com/greatLong/p/10843331.html

總結

以上是生活随笔為你收集整理的使用Map排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。