【发布时间】:2016-05-08 08:05:27
【问题描述】:
我希望我的代码根据一个值对我的哈希图进行排序。用户将输入字符串并计算出现次数。字符及其出现将存储到 hasmap 中。它应该按升序排序,而不关心它的键。在我的代码中,如果它们都具有相同的值,则按字母顺序排序。如果它们具有相同的值,我不希望它进行排序。
期望的输出:
输入一个字符串:maabccc
米:1
乙:1
答:2
c: 3
程序的输出:
输入一个字符串:maabccc
乙:1
米:1
答:2
c: 3
public static void main(String args[]){
System.out.print("Enter a string: ");
string = input.nextLine();
char newChar[] = string.toCharArray();
int count[] = countFrequency(string);
Map<Character, Integer> sortedMap = sortByComparator(hm);
for(Entry<Character, Integer> entry : sortedMap.entrySet()){
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
public static Map<Character, Integer> sortByComparator(Map<Character, Integer> unsortMap){
List<Entry<Character, Integer>> list = new LinkedList<>(unsortMap.entrySet());
Collections.sort(list, new Comparator<Entry<Character, Integer>>(){
@Override
public int compare(Entry<Character, Integer> o1, Entry<Character, Integer> o2){
return o1.getValue().compareTo(o2.getValue());
}
});
Map<Character, Integer> sortedMap = new LinkedHashMap<>();
for(Entry<Character, Integer> entry : list)
sortedMap.put(entry.getKey(), entry.getValue());
return sortedMap;
}
【问题讨论】:
-
您似乎已经完成了排序 - 您的问题是什么?
-
@assylias 我希望它排序,但如果有两个或多个具有相同值的字符,则第一个输入的字符应位于第一行且不应排序。在代码中,如果它们都具有相同的值,则按字母顺序排序。
标签: java sorting linked-list hashmap