Hallo,
mein Programm scannt values die auf der Tastatur gedrückt werden. Die HashMap besitz den Key Charakter und den Value Int. Jedessmal wenn die jeweilige Taste noch einmal gedrückt wird erhöht sich der Value des jeweiligen Keys (Taste die man gedrückt hat) um eins. Der Methode wird nun eine gefüllte HM die zB. so aussehen kann:
'a' = 2
'w' = 6
'z' = 1
usw.
Nun soll die HM absteigend nach ihren Values sortiert werden.
Wir haben den folgenden Code aus dem Internet gefunden. Leider wird die HM hierbei nach dem Key gesucht und nicht nach dem Value...
[CODE lang="java" title="SortMethod"] public HashMap<Character, Integer> sortHM(HashMap<Character, Integer> hm){
HashMap<Character, Integer> retHM = new HashMap<Character, Integer>();
List<Map.Entry<Character, Integer>> list = new ArrayList<>(hm.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>(){
@Override
public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
return o1.getValue()- o2.getValue();
}
});
for(Map.Entry<Character ,Integer> current : list){
retHM.put(current.getKey() , current.getValue());
}
return retHM;
}[/CODE]
mein Programm scannt values die auf der Tastatur gedrückt werden. Die HashMap besitz den Key Charakter und den Value Int. Jedessmal wenn die jeweilige Taste noch einmal gedrückt wird erhöht sich der Value des jeweiligen Keys (Taste die man gedrückt hat) um eins. Der Methode wird nun eine gefüllte HM die zB. so aussehen kann:
'a' = 2
'w' = 6
'z' = 1
usw.
Nun soll die HM absteigend nach ihren Values sortiert werden.
Wir haben den folgenden Code aus dem Internet gefunden. Leider wird die HM hierbei nach dem Key gesucht und nicht nach dem Value...
[CODE lang="java" title="SortMethod"] public HashMap<Character, Integer> sortHM(HashMap<Character, Integer> hm){
HashMap<Character, Integer> retHM = new HashMap<Character, Integer>();
List<Map.Entry<Character, Integer>> list = new ArrayList<>(hm.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>(){
@Override
public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
return o1.getValue()- o2.getValue();
}
});
for(Map.Entry<Character ,Integer> current : list){
retHM.put(current.getKey() , current.getValue());
}
return retHM;
}[/CODE]