Sortieren von HashMap, die von Werten unter Verwendung einer TreeMap und Komparator

Im mit dem folgenden code erstellt eine hashmap und dann Sortieren Sie die Werte in der hashmap durch die Verwendung einer treemap und ein Komparator. Die Ausgabe wird jedoch etwas unerwartet.
Also irgendwelche Gedanken, was Im tun falsch wäre hilfreich

Code

public static void main(String[] args) {
    System.out.println("Most freq"+mostFreq(" i me hello hello hello me"));
}


public static String[] mostFreq(String str){

    if ((str==null)||( str.trim().equalsIgnoreCase("")))
        return null;

    String[] arr = new String[10];

    String[] words= str.split(" ");

    Map <String,Integer> map = new HashMap<String,Integer>();

    for (String word :words)
    { 
        int count =0;
        if (map.containsKey(word))
        {     
            count= map.get(word);
            map.put(word, count+1);
        }             
        else
            map.put(word, 1);
    }

    MyComparator comp= new MyComparator(map);
    Map<String,Integer> newMap= new TreeMap(comp);
    newMap.putAll(map);
    Iterator it= newMap.entrySet().iterator();
    while (it.hasNext())
    {
        Map.Entry pairs = (Map.Entry) it.next();
        System.out.println("Key  "+pairs.getKey()+"-- value"+pairs.getValue());
    }

    return arr;
}

Hier ist der Komparator

package samplecodes;

import java.util.Comparator;
import java.util.Map;

public class MyComparator implements Comparator {

    Map map;

    public MyComparator(Map map){
        this.map=map;
    }

    @Override
    public int compare(Object o1, Object o2) {
        return ((Integer)map.get(o1) >(Integer)map.get(o2)? (Integer)map.get(o1):(Integer)map.get(o2));
    }

}

Und der Ausgang ist von der form

me-2
hello-3
i-3
  • Dein code produziert nicht diese Ausgabe. Sind Sie sicher, es ist die, die Sie verwenden?
  • Auch vielleicht nehmen Sie einen Blick an how-to-sort-a-mapkey-value-on-the-values-in-java
  • viele schlechte Geruch in deinem code: bitte richtige add-Generika-Typ param für Ihre Map, Iterator, usw.. In mostFreq() sind Sie wieder arr ist, die ist einfach ein leeres String-array, das nie berührt wurde in der Methode. Ich bin auch die Antworten in eine Antwort über Ihre Logik problem
  • Das war eine Methode im Aufbau . Ich testete einige der Datenstrukturen, bevor ich beendete die Codierung der problem-und das ist, wenn ich die Frage gepostet. Guten Fang, obwohl!
  • Wie ich schon in meinem anderen Kommentar, Sie sind über Extras /Daten-Struktur, in der falsche Weg. Die Art und Weise Sie TreeMap ist einfach nicht, wie es sich wohl zu verwenden.
InformationsquelleAutor seeker | 2013-10-25
Schreibe einen Kommentar