【发布时间】:2016-03-10 13:38:15
【问题描述】:
我有 3 个哈希图:
Map<String, HashMap<String, Integer>> tokenUnikTF= new LinkedHashMap<>();
Map<String, HashMap<String, Integer>> tokenUnikDF= new LinkedHashMap<>();
Map<String, HashMap<String, Double>> tokenUnikWeight= new LinkedHashMap<>();
上面3个hashmap的区别只在于value,它们的key是一样的。
这是我添加 tokenUnikWeight 的键和值的方法:
for (String key5 : tokenUnikTF.keySet()) {
tokenUnikWeight.put(key5, calculateWeight());
}
我想将它们一起打印,但按 tokenUnikWeight 值的降序排列
这是我的排序代码:
public static LinkedHashMap<String,Double> sortHashMap() {
List<Map.Entry<String, Double>> list = new LinkedList<>(tokenUnikWeight.entrySet());
Collections.sort(list, new Comparator<Map.Entry<String, Double>>() {
@Override
public int compare(Map.Entry<String, Double> o1, Map.Entry<String, Double> o2) {
return (o1.getValue()).compareTo(o2.getValue());
}
});
Map<String, Double> result = new LinkedHashMap<>();
for (Map.Entry<String, Double> entry : list) {
result.put(entry.getKey(), entry.getValue());
}
return (LinkedHashMap<String, Double>) result;
}
这是我的打印代码:
tokenUnikWeight = sortHashMap();
for (String key5 : tokenUnikWeight.keySet()) {
System.out.printf("%s - %d - %d - %f\n", key5, tokenUnikTF.get(key5), tokenUnikDF.get(key5), tokenUnikWeight.get(key5));
}
输出是我在一些 tf 和 df 中得到了 null,我的体重也按升序而不是降序排序:
请有人帮帮我,我用谷歌搜索了很多,但还是一样,它在某些 tf 和 df 中返回 null。
【问题讨论】:
标签: java sorting dictionary hashmap linkedhashmap