Problem: Erstellen eines nach Häufigkeit sortierten Arrays von z.B. Wörtern.
Ich möchte ein Array erstellen, daß z.B. Wörter nach ihrer Häufigkeit sortiert angibt:
Wie gehe ich da am besten vor?
Meine bisherige Lösung sieht so aus:
Einlesen der Wörter und speichern in der Map mit MyInt(1) falls noch
nicht vorhanden. Falls bereits vorhanden, erhöhen der Anzahl. Hierbei
muß ich dann hashCode und equals von Wort überschreiben lassen.
Dann umkopieren in ein entsprechendes Wort[] und anschließendes
Sortieren, wobei hier compareTo entsprechend überschrieben werden
muß.
Das ganze kommt mir jedoch sehr umständlich und unelegant vor
Hat da jemand einen besseren Vorschlag? Gibt es hier eine Collection,
die angebrachter wäre?
Ich möchte ein Array erstellen, daß z.B. Wörter nach ihrer Häufigkeit sortiert angibt:
Code:
class Wort extends Comparable {
private String wort;
private int anzahl;
...
}
Wort[] wörter;
Wie gehe ich da am besten vor?
Meine bisherige Lösung sieht so aus:
Code:
class Wort extends Comparable {
private String wort;
private int anzahl;
...
public int compareTo(Object o) {
return anzahl - ((Wort) o).anzahl;
}
public int hashCode() {return wort.hashCode();}
}
class MyInt {
int theInt;
...
}
Map<String, Integer> words = new HashMap<String, MyIntr>();
Einlesen der Wörter und speichern in der Map mit MyInt(1) falls noch
nicht vorhanden. Falls bereits vorhanden, erhöhen der Anzahl. Hierbei
muß ich dann hashCode und equals von Wort überschreiben lassen.
Dann umkopieren in ein entsprechendes Wort[] und anschließendes
Sortieren, wobei hier compareTo entsprechend überschrieben werden
muß.
Das ganze kommt mir jedoch sehr umständlich und unelegant vor
Hat da jemand einen besseren Vorschlag? Gibt es hier eine Collection,
die angebrachter wäre?