入力ファイルからデータを取得し、必要なものを取得してファイルに出力する単純なプロジェクトに取り組んでいます。基本的に単語の頻度を取得しているため、各キーは文字列であり、値はドキュメント内の頻度です。ただし、問題は、これらの値を頻度の高い順にファイルに出力する必要があることです。ハッシュマップを作成した後、これはプログラムの一部であり、それを並べ替えてファイルに書き込みます。
//Hashmap I create
Map<String, Integer> map = new ConcurrentHashMap<String, Integer>();
int valueMax = -1;
//function to sort hashmap
while (map.isEmpty() == false){
for (Entry<String, Integer> entry: map.entrySet()){
if (entry.getValue() > valueMax){
max = entry.getKey();
System.out.println("max: " + max);
valueMax = entry.getValue();
System.out.println("value: " + valueMax);
}
}
map.remove(max);
out.write(max + "\t" + valueMax + "\n");
System.out.println(max + "\t" + valueMax);
}
これを実行すると、次のようになります。
t 9
t 9
t 9
t 9
t 9
....
そのため、同じ値を取得し続けるため、削除機能が機能していないようです。スコープ ルールに問題があるか、ハッシュマップをよく理解していないだけだと思います。
ハッシュマップをソートして印刷するより良い方法を知っている人がいれば、提案を歓迎します。
ありがとう