Java中Map集合排序 需要TreeMap 这个集合的构造方法中参数有比较器 面试题:输入字符串,统计A、B、C、D、出现次数,由高到低输出字母和出现次数,使用Map集合完成此题
标签:getfor参数按键system输入rachashmap字符串
Map和Collections是同级别的,不能像List排序那样直接用Collections.sort(new Comparator<?>(){ 复写compara方法});
HashMap没有排序
TreeMap默认排序为升序,注意是按键值key排序
package com.swift;
import java.util.Comparator;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
public class Scanner_String_ABCD_Times_jiangxu {
public static void main(String[] args) {
/*
* 输入字符串,统计A、B、C、D、出现次数,由高到低输出字母和出现次数
*/
Scanner scan=new Scanner(System.in);
System.out.println(\”请输入一个字符串,用于统计A、B、C、D出现次数:\”);
String str=scan.nextLine();
//降序
Map<Character,Integer> map=new TreeMap<Character,Integer>(new Comparator<Character>() {
@Override
public int compare(Character arg0, Character arg1) {
return arg1.compareTo(arg0);
}
});
map.put(‘A‘, 0);
map.put(‘B‘, 0);
map.put(‘C‘, 0);
map.put(‘D‘, 0);
map.put(‘a‘, 0);
map.put(‘b‘, 0);
map.put(‘c‘, 0);
map.put(‘d‘, 0);
char[] arr=str.toCharArray();
for(char c:arr) {
if(map.containsKey(c)) {
Integer i=map.get(c);
i++;
map.remove(c);
map.put(c, i);
}
}
for(Map.Entry<Character, Integer> entry:map.entrySet()) {
System.out.println(entry.getKey()+\”~~\”+entry.getValue());
}
for(Map.Entry<Character, Integer> entry:map.entrySet()) {
System.out.println(entry.getKey()+\”~~\”+entry.getValue());
}
}
}
根据TreeMap的value来进行排序。对value排序还是需要借助于Collections的sort(List<T> list, Comparator<? super T> )
package com.swift;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import