私は現在、ファイル内の単語を数えるためにHashtable
を使用する単語カウンタプログラムを作成しています。プログラム内で単語のオカレンスを降順で並べ替えるためにリンクリストを作成したいと思います。HashTableからLinkedListに要素を追加して並べ替えるにはどうすればいいですか?
私はリンクリストに要素を追加する方法を知っていますが、Hashtable
の要素をリンクリストに追加し、値を降順で並べ替える方法はわかりません。あなたはそれを助けてもらえますか?ここで
は、私がこれまで持っているコードです:ハッシュテーブルの場合
import java.io.FileReader;
import java.util.*;
import java.util.Hashtable;
import java.util.stream.Collectors;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class WordCounter {
public Hashtable count_words(String contents) {
Hashtable < String, Integer > count = new Hashtable < String, Integer >();
Set <String> key = count.keySet();
StringTokenizer w = new StringTokenizer(contents);
while (w.hasMoreTokens()) {
String word = w.nextToken();
word = word.toLowerCase();
word = word.replaceAll("[-+.^:(\"),']", "");
if (count.containsKey(word)) {
count.put(word, count.get(word) + 1);
} else {
count.put(word, 1);
}
}
return count;
}
public LinkedList top20(Hashtable count) {
///I don't know how to add elements from hashtable to linkedlist
return new LinkedList();
}
public static void main(String args[]) {
try {
String contents = "";
Scanner in = new Scanner(new FileReader("src/ADayInTheLife.txt"));
while (in .hasNextLine()) {
contents += in .nextLine() + "\n";
}
WordCounter wc = new WordCounter();
Hashtable count = wc.count_words(contents);
System.out.println(count);
} catch (Exception e) {
System.err.println("Error " + e.getMessage());
}
}
}
すでに知っているように、 'ArrayList'を使う方が意味がありますemsがあり、 'Collections.sort()'でそれをソートすることができます。 – EJP