我正在开发一个简单的项目,该项目从输入文件中获取数据,获取所需的内容并将其打印到文件中。我基本上得到了词频,所以每个键都是一个字符串,值是它在文档中的频率。然而,问题是我需要按频率降序将这些值打印到文件中。在制作我的哈希图之后,这是我的程序的一部分,用于对其进行排序并将其写入文件。
//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
....
所以看起来删除功能不起作用,因为它不断获得相同的值。我在想我的范围规则有问题,或者我只是不太了解哈希图。
如果有人知道对哈希图进行排序和打印的更好方法,我会欢迎提出建议。
谢谢