这个 HashMap 使用一个名为 Sentence 的字符串对象作为键,它是程序的重要组成部分,无法更改。数据应该根据对应值的大小进行组织,该值是一个整数,从大到小依次递减,1为最小界限,每个分区之间的顺序并不重要。使用此代码可以实现吗?
//map to store learned 'rules'
Map<Sentence, Integer> ruleCount = new HashMap<>();
//store data
public void numberRules(Sentence sentence)
{
if (!ruleCount.containsKey(sentence))
{
ruleCount.put(sentence, 0);
}
ruleCount.put(sentence, ruleCount.get(sentence) + 1);
}
最佳答案
HashMap 没有顺序。有排序的映射,但它们是按键而不是值排序的。完成修改后,只需将 map 转换为列表,然后对列表进行排序:
List<Map.Entry<Sentence, Integer>> entries = new ArrayList<>(ruleCount.entrySet());
Collections.sort(entries, new Comparator<Map.Entry<Sentence, Integer>>() {
@Override
public int compare(Map.Entry<Sentence, Integer> e1, Map.Entry<Sentence, Integer> e2) {
return e1.getValue().compareTo(e2.getValue());
}
});
关于java - 按其值的大小对 HashMap 进行排序。 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28136540/