Ich habe Strings aus einer Datei in eine ArrayList gespeichert und ein HashSet verwendet, um die Anzahl der Vorkommen jeder Zeichenfolge zu zählen.Sortieren von String-Vorkommen aus Textdatei
Ich freue mich, die Top 5 Wörter und ihre Anzahl der Vorkommen aufzulisten. Ich sollte dies ohne Implementierung einer Hashtable, Treemap, etc. erreichen können. Wie kann ich das erreichen?
ist hier meine Arraylist:
List<String> word_list = new ArrayList<String>();
while (INPUT_TEXT1.hasNext()) {
String input_word = INPUT_TEXT1.next();
word_list.add(input_word);
}
INPUT_TEXT1.close();
int word_list_length = word_list.size();
System.out.println("There are " + word_list_length + " words in the .txt file");
System.out.println("\n\n");
System.out.println("word_list's elements are: ");
for (int i = 0; i<word_list.size(); i++) {
System.out.print(word_list.get(i) + " ");
}
System.out.println("\n\n");
Hier ist mein HashSet:
Set<String> unique_word = new HashSet<String>(word_list);
int number_of_unique = unique_word.size();
System.out.println("unique worlds are: ");
for (String e : unique_word) {
System.out.print(e + " ");
}
System.out.println("\n\n");
String [] word = new String[number_of_unique];
int [] freq = new int[number_of_unique];
int count = 0;
System.out.println("Frequency counts : ");
for (String e : unique_word) {
word[count] = e;
freq[count] = Collections.frequency(word_list, e);
System.out.println(word[count] + " : "+ freq[count] + " time(s)");
count++;
}
Könnte es sein, dass ich einen Schritt am Grübeln? Vielen Dank im Voraus
eine innere Klasse erstellen, sagen Z, zwei Felder mit - Wort, Zählung, die implementiert 'Vergleichbare' und überschreibt die 'hashcode()' und 'equals() 'Methode. Erstellen Sie einen Satz von Instanzen dieser Klasse - wenn set das Objekt enthält, erhalten Sie es und inkrementieren Sie die Anzahl. Sortieren Sie es mit 'Collections.sort()'. Und da gehst du. –
GurV
Das gesagt, Hashmap ist wahrscheinlich der bessere Weg, es zu tun – GurV
Es gibt eine einfache Implementierung in Apache Commons, mit 'HashBag' – ifly6