Java<TreeMap按key排序与按照value排序>

来源:互联网 发布:郭德纲合作的网络平台 编辑:程序博客网 时间:2024/05/24 07:06
  1. TreeMap默认按照key递增排序
public class Main {    public static void main(String[] args) {        TreeMap<Integer, String> treeMap = new TreeMap<>();        TreeMap<String, Integer> treeMap1 = new TreeMap<>();        treeMap.put(7, "h");        treeMap.put(8, "g");        treeMap.put(9, "f");        treeMap.put(10, "e");        treeMap.put(14, "a");        treeMap.put(1, "w");        treeMap.put(2, "v");        treeMap.put(3, "u");        treeMap.put(11, "d");        treeMap.put(12, "c");        treeMap.put(13, "b");        treeMap.put(4, "k");        treeMap.put(5, "j");        treeMap.put(6, "i");        System.out.println("----------------------*------------------------------");        while (treeMap.size() != 0) {            //treemap自动按照key进行递增排序            System.out.println(treeMap.firstEntry().getKey() + " - " + treeMap.firstEntry().getValue());            treeMap1.put(treeMap.firstEntry().getValue(), treeMap.firstEntry().getKey());            treeMap.remove(treeMap.firstKey());        }        System.out.println("----------------------*------------------------------");        while (treeMap1.size() != 0) {            //treemap自动按照key进行递增排序            System.out.println(treeMap1.firstEntry().getKey() + " - " + treeMap1.firstEntry().getValue());            treeMap1.remove(treeMap1.firstKey());        }        System.out.println("----------------------*------------------------------");    }}

得到结果:

----------------------*------------------------------1 - w2 - v3 - u4 - k5 - j6 - i7 - h8 - g9 - f10 - e11 - d12 - c13 - b14 - a----------------------*------------------------------a - 14b - 13c - 12d - 11e - 10f - 9g - 8h - 7i - 6j - 5k - 4u - 3v - 2w - 1----------------------*------------------------------

2.按照value排序

public class Main {    public static void main(String[] args) {        TreeMap<String, Integer> treeMap = new TreeMap<>();        treeMap.put("s", 2);        treeMap.put("w", 5);        treeMap.put("d", 1);        treeMap.put("f", 0);        treeMap.put("h", 9);        treeMap.put("q", 22);        treeMap.put("a", 25);        //按照value排序        List<Map.Entry<String, Integer>> entryArrayList = new ArrayList<>(treeMap.entrySet());        Collections.sort(entryArrayList, Comparator.comparing(Map.Entry::getValue));        System.out.println("----------------------*------------------------------");        for (Map.Entry<String, Integer> entry : entryArrayList) {            System.out.println(entry.getKey() + " - " + entry.getValue());        }        System.out.println("----------------------*------------------------------");    }}

结果:

----------------------*------------------------------f - 0d - 1s - 2w - 5h - 9q - 22a - 25----------------------*------------------------------

注意:

List<Map.Entry<String, Integer>> entryArrayList = new ArrayList<>(treeMap.entrySet());        Collections.sort(entryArrayList, Comparator.comparing(Map.Entry::getValue));

等价于下面的lamda:

  List<Map.Entry<String, Integer>> entryArrayList = new ArrayList<>(treeMap.entrySet());        Collections.sort(entryArrayList, (o1, o2) -> o1.getValue().compareTo(o2.getValue()));

也等价于:

List<Map.Entry<String, Integer>> entryArrayList = new ArrayList<>(treeMap.entrySet());        Collections.sort(entryArrayList, new Comparator<Map.Entry<String, Integer>>() {            @Override            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {                return o1.getValue().compareTo(o2.getValue());            }        });
原创粉丝点击