我有3个hashmap:
{ 1, 2, 4, 6 }
上面3个hashmap之间的区别仅在于值,它们的键是相同的。
这里是我如何添加tokenUnikWeight的键和值:
Map<String, HashMap<String, Integer>> tokenUnikTF= new LinkedHashMap<>();
Map<String, HashMap<String, Integer>> tokenUnikDF= new LinkedHashMap<>();
Map<String, HashMap<String, Double>> tokenUnikWeight= new LinkedHashMap<>();
我想将它们全部打印在一起,但是按照降序由tokenUnikWeight的值
这是我的排序代码:
for (String key5 : tokenUnikTF.keySet()) {
tokenUnikWeight.put(key5, calculateWeight());
}
这是我的打印代码:
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;
}
有人帮助我,我做了很多谷歌搜索,但仍然相同,它在某些tf和df中返回null。
答案 0 :(得分:1)
将比较器更改为:return (o2.getValue()).compareTo(o1.getValue());
以降序排列。至于空值,你确定在tokenUnikTF,DF中这些键是否存在且它们的值不为空?
答案 1 :(得分:0)
尝试在(o1.getValue()).compareTo(o2.getValue())
实施中使用(o2.getValue()).compareTo(o1.getValue())
替换Comparator
。