站長資訊網
最全最豐富的資訊網站

java中的map可以根據key排序嗎

java中的map可以根據key排序嗎

java中map常用排序方式:按鍵排序(sort by key), 按值排序(sort by value)。推薦:java視頻教程

1、按鍵排序

jdk內置的java.util包下的TreeMap<K,V>既可滿足此類需求,向其構造方法 TreeMap(Comparator<? super K> comparator) 傳入我們自定義的比較器即可實現按鍵排序。

默認升序排序方法:

import java.util.Map; import java.util.Set; import java.util.TreeMap;   public class TEST {       public static void main(String[] args) {         TEST t = new TEST();         t.sort();     }           public void sort(){         Map<String, String> treeMap = new TreeMap<String, String>();         treeMap.put("c", "ccccc");          treeMap.put("a", "aaaaa");          treeMap.put("b", "bbbbb");          treeMap.put("d", "ddddd");          Set<String> s = treeMap.keySet();         for (String key : s) {              System.out.println(key+" : "+treeMap.get(key));          }      } }

輸出結果:

a : aaaaa
b : bbbbb
c : ccccc
d : ddddd

2、按值排序

按值排序就相對麻煩些了,貌似沒有直接可用的數據結構能處理類似需求,需要我們自己轉換一下。

Map本身按值排序是很有意義的,很多場合下都會遇到類似需求,可以認為其值是定義的某種規則或者權重。

原理:將待排序Map中的所有元素置于一個列表中,接著使用Collections的一個靜態方法 sort(List<T> list, Comparator<? super T> c)

來排序列表,同樣是用比較器定義比較規則。排序后的列表中的元素再依次裝入Map,為了肯定的保證Map中元素與排序后的List中的元素的順序一致,使用了LinkedHashMap數據類型。

實現代碼

public class MapSortDemo {      public static void main(String[] args) {          Map<String, String> map = new TreeMap<String, String>();          map.put("KFC", "kfc");         map.put("WNBA", "wnba");         map.put("NBA", "nba");         map.put("CBA", "cba");          Map<String, String> resultMap = sortMapByKey(map);    //按Key進行排序 //        Map<String, String> resultMap = sortMapByValue(map); //按Value進行排序          for (Map.Entry<String, String> entry : resultMap.entrySet()) {             System.out.println(entry.getKey() + " " + entry.getValue());         }     }          /**      * 使用 Map按value進行排序      * @param map      * @return      */     public static Map<String, String> sortMapByValue(Map<String, String> oriMap) {         if (oriMap == null || oriMap.isEmpty()) {             return null;         }         Map<String, String> sortedMap = new LinkedHashMap<String, String>();         List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(                 oriMap.entrySet());         Collections.sort(entryList, new MapValueComparator());          Iterator<Map.Entry<String, String>> iter = entryList.iterator();         Map.Entry<String, String> tmpEntry = null;         while (iter.hasNext()) {             tmpEntry = iter.next();             sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());         }         return sortedMap;     } }

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
午夜DY888国产精品影院| 精品久久久久久国产牛牛app| 国产成人久久精品区一区二区| 国产成人精品午夜福利| 中文字幕精品无码亚洲字| 伊人精品久久久久7777| 中文字幕日韩一区| 日韩人妻无码精品无码中文字幕 | 国产精品扒开做爽爽爽的视频| 亚洲最大天堂无码精品区| 国产成人精品免费视频大全麻豆 | 无码欧精品亚洲日韩一区夜夜嗨 | 日韩A∨精品日韩在线观看| 国产精品美女久久久网站| 精品久久久久久中文字幕无码 | 日本精品久久久久影院日本| 日韩中文字幕在线| 日韩毛片一级好特黄| 日韩精品无码视频一区二区蜜桃 | 人妻少妇精品系列| 日本精品久久久久影院日本| 精品一区二区三区AV天堂| 牛牛在线精品免费视频观看| 日韩精品高清在线| 色婷婷精品免费视频| 日本精品少妇一区二区三区| 日韩综合在线视频| 一区二区三区四区精品| 2022年国产精品久久久久| 国产精品一级AV在线播放| 国产日韩久久久精品影院首页 | 国产精品成人久久久久三级午夜电影 | 97精品国产91久久久久久久| 午夜精品视频在线| 日韩精品久久无码中文字幕| 久久精品国产亚洲AV麻豆网站| 久久久久99精品成人片试看| 91精品久久久久久久久久小网站| 亚洲国产精品张柏芝在线观看 | 男人扒开女人下添高潮日韩视频 | 九九久久国产精品免费热6|