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大小升序排列