Java: TreeMap的排序效果

TreeMap默认按照key的大小升序排列

public class Test {
    // 使用TreeMap记录所有人的得分,获得不同得分的人数,以分数大小排序
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int per = in.nextInt();  // 总人数
        TreeMap<Integer, Integer> map = new TreeMap<>();        
        for (int j = 0; j < per; j++) {
        	int score = in.nextInt();
        	if (!map.containsKey(score)) {
        		map.put(score, 1);
        	} else {
        		map.put(score, map.get(score) + 1);
        	}
        }
        List<Entry<Integer, Integer>> list = new ArrayList<Entry<Integer, Integer>>(map.entrySet()); 
        
        for (Entry<Integer, Integer> e: list) {
        	System.out.println(e.getKey() + ": " + e.getValue());
        }
    }
  }

}

结果为
在这里插入图片描述

TreeMap按Value排序

public class Test {
    
    // 使用TreeMap记录所有人的得分,并按照不同得分的人数进行排序
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int per = in.nextInt();  // 总人数
        TreeMap<Integer, Integer> map = new TreeMap<>();        
        for (int j = 0; j < per; j++) {
        	int score = in.nextInt();
        	if (!map.containsKey(score)) {
        		map.put(score, 1);
        	} else {
        		map.put(score, map.get(score) + 1);
        	}
        }
        //	根据value来排序,将键值对保存到list,用Colletions.sort方法排序
        List<Entry<Integer, Integer>> list = new ArrayList<Entry<Integer, Integer>>(map.entrySet()); 
        Collections.sort(list, new Comparator<Map.Entry<Integer,Integer>>() {
        	public int compare(Entry<Integer,Integer> o1, Entry<Integer, Integer> o2) {
        		return o1.getValue() > o2.getValue() ? 1:-1;  //升序排列
        	}
        });
        for (Entry<Integer, Integer> e: list) {
        	System.out.println(e.getKey() + ": " + e.getValue());
        }
    }
  }

}

结果按value大小升序排列
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/baidu_25104885/article/details/88616293