java - 按其值的大小对 HashMap 进行排序。 java

标签 java sorting hashmap

这个 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/

相关文章:

java - 生成一系列最接近另一个数字的百位的数字

java - 部署和 "java.lang.OutOfMemoryError: PermGen exception"

java - 正则表达式检测包含权重的括号

bash - 根据第三列的数字排序,然后是第一列的最后一个字符(非固定长度)字母数字排序,在 bash 中没有固定的分隔符

java - 我怎样才能不通过 putAll() 覆盖值而是添加到当前值?

java - 将 ArrayList 从 Servlet 传递到 JSP 时出错

JavaFX LineChart/AreaChart x 轴 (CategoryAxis) 上的错误排序值

java - 如果行之间存在多个间隙,如何从输入文件中读取所有行?

java - 如何使用 Gson 将 JSON 转换为 HashMap?

java - Java 中的堆栈溢出错误