HashMap与TreeMap按照key和value排序

Posted 溪山晴雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap与TreeMap按照key和value排序相关的知识,希望对你有一定的参考价值。

  1 package com.sort;
  2 
  3 import java.util.ArrayList;
  4 import java.util.Collections;
  5 import java.util.Comparator;
  6 import java.util.HashMap;
  7 import java.util.List;
  8 import java.util.Map;
  9 import java.util.Map.Entry;
 10 import java.util.TreeMap;
 11 
 12 /**
 13  * Map的排序
 14  * 
 15  * @author root
 16  *
 17  */
 18 public class MapSort {
 19     /**
 20      * TreeMap按照key进行排序
 21      */
 22     public static void TreeMapSortByKey() {
 23         Map<String, String> map = new TreeMap<String, String>(new Comparator<String>() {
 24             @Override
 25             public int compare(String o1, String o2) {
 26                 // 降序排列
 27                 return o2.compareTo(o1);
 28             }
 29         });
 30         map.put("c", "ccccc");
 31         map.put("a", "aaaaa");
 32         map.put("b", "bbbbb");
 33         map.put("d", "ddddd");
 34         for (String key : map.keySet()) {
 35             System.err.println("key:" + key + "  value:" + map.get(key));
 36         }
 37     }
 38 
 39     /**
 40      * TreeMap按照value排序
 41      */
 42     public static void TreeMapSortByValue() {
 43         Map<String, String> map = new TreeMap<String, String>();
 44         map.put("d", "ccccc");
 45         map.put("b", "bbbbb");
 46         map.put("a", "eeeee");
 47         map.put("c", "ddddd");
 48         // 将map.entrySet()转换成list
 49         List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet());
 50         // 通过比较器来实现排序
 51         Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
 52             @Override
 53             public int compare(Entry<String, String> o1, Entry<String, String> o2) {
 54                 // 升序排序
 55                 return o1.getValue().compareTo(o2.getValue());
 56             }
 57         });
 58         for (Map.Entry<String, String> mapping : list) {
 59             System.out.println(mapping.getKey() + ":" + mapping.getValue());
 60         }
 61     }
 62 
 63     /**
 64      * Map按照Key排序
 65      */
 66     public static void MapSortByKey() {
 67         Map<String, String> map = new HashMap<String, String>();
 68         map.put("d", "ccccc");
 69         map.put("b", "bbbbb");
 70         map.put("a", "eeeee");
 71         map.put("c", "ddddd");
 72         // 将map.entrySet()转换成list
 73         List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet());
 74         // 通过比较器来实现排序
 75         Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
 76             @Override
 77             public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
 78                 // 升序排序
 79                 return o1.getKey().compareTo(o2.getKey());
 80             }
 81         });
 82         for (Map.Entry<String, String> mapping : list) {
 83             System.out.println(mapping.getKey() + ":" + mapping.getValue());
 84         }
 85     }
 86 
 87     /**
 88      * Map按照Value排序
 89      */
 90     public static void MapSortByValue() {
 91         Map<String, String> map = new HashMap<String, String>();
 92         map.put("d", "ccccc");
 93         map.put("b", "bbbbb");
 94         map.put("a", "eeeee");
 95         map.put("c", "ddddd");
 96         // 将map.entrySet()转换成list
 97         List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet());
 98         // 通过比较器来实现排序
 99         Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
100             @Override
101             public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
102                 // 降序排序
103                 return o2.getValue().compareTo(o1.getValue());
104             }
105         });
106         for (Map.Entry<String, String> mapping : list) {
107             System.out.println("key:"+mapping.getKey() + "  value:" + mapping.getValue());
108         }
109     }
110 
111     public static void main(String[] args) {
112         // MapSort.TreeMapSortByKey();
113         // MapSort.TreeMapSortByValue();
114         MapSort.MapSortByKey();
115         MapSort.MapSortByValue();
116     }
117 }

 

以上是关于HashMap与TreeMap按照key和value排序的主要内容,如果未能解决你的问题,请参考以下文章

HashMap和TreeMap的区别

HashMap和TreeMap的区别

如何修改treemap的value

java面试题之HashMap和TreeMap的区别

TreeMap按照value值进行排序

如何决定使用 HashMap 还是 TreeMap?