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

        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號
        主站蜘蛛池模板: 国产精品美女网站在线观看| 人妻少妇精品无码专区动漫| 国产午夜精品一区二区三区小说 | 国产精品亚洲w码日韩中文| 精品无码国产一区二区三区AV| 久久精品亚洲乱码伦伦中文| 亚洲国产精品lv| 国产精品无码久久久久久| 亚洲国产精品无码久久| 久久青青草原精品国产软件| 国产精品国产三级国产a| 精品国产欧美另类一区| 91国内外精品自在线播放| 久久久久久久久无码精品亚洲日韩 | 国产精品小黄鸭一区二区三区 | 精品久久久久久国产潘金莲| 亚洲一区无码精品色| 久久夜色精品国产www| 国产亚洲精品不卡在线| 成人午夜精品久久久久久久小说| 99久久国语露脸精品国产| 精品久久久久久久无码| 精品国产一区二区三区不卡| 久久精品亚洲日本波多野结衣 | 国产日韩精品中文字无码| 久久99国内精品自在现线| 人人妻人人澡人人爽人人精品电影| 亚洲国产精品成人网址天堂| 日韩专区亚洲精品欧美专区| 欧美精品福利视频一区二区三区久久久精品| 国产精品女同一区二区久久| 国产精品永久免费| 精品国产免费人成网站| 久久久久久久久久免免费精品| 国内精品久久久久久久涩爱| 精品国产黑色丝袜高跟鞋| 欧美精品一区二区久久| 亚洲国产欧美日韩精品一区二区三区 | 少妇亚洲免费精品| 午夜三级国产精品理论三级| 最新国产在线精品观看|