TreeMap.get() 即使键存在也返回 Null

2024-01-21

我试图从 TreeMap 获取数据,但即使键存在它也会返回 null。 HashCode 和 equals 仅基于单词。可比性基于频率。

    public static void main(){
        TreeMap<Word,Integer> test = new TreeMap<>();
        test.put(new Word("pqr",12),1);
        test.put(new Word("abc",2),1);

        Integer prq = test.get(new Word("pqr",1));
        System.out.println(prq);
        prq = test.get(new Word("pqr",12));
        System.out.println(prq);
    }


    public class Word implements Comparable<Word>{
        String word;
        Integer freq;

        public Word(String word, Integer freq) {
            this.word = word;
            this.freq = freq;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (!(o instanceof Word)) return false;

            Word word1 = (Word) o;

            return word.equals(word1.word);
        }

        @Override
        public int hashCode() {
            return word.hashCode();
        }


        @Override
        public int compareTo(Word o) {
            return this.freq.compareTo(o.freq);
        }
    }

输出就像 无效的 1


In your compareTo方法是比较频率。因此,如果频率相同,则它是相等的。

比较你可以使用的单词

return this.word.compareTo(o.word);

或者比较您可以使用的单词和频率

return this.word.compareTo((o.word)) *  this.freq.compareTo(o.freq);

EDIT

现在,由于您需要使用频率进行排序,因此您可以使用而不是使用可比较的Comparator。使用上面的比较器来创建地图。并使用之前的比较器进行排序。

在创作时

        TreeMap<Word, Integer> test = new TreeMap<Word, Integer>(
            new Comparator<Word>() {
                public int compare(Word word, Word o) {
                    return word.word.compareTo((o.word));
                }
            });

并且在排序时

    Collections.sort(new LinkedList(test.keySet()), new Comparator<Word>() {
        public int compare(Word word, Word o) {
            return word.freq.compareTo((o.freq));
        }
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TreeMap.get() 即使键存在也返回 Null 的相关文章

随机推荐

  • 从给定的物理和有效地址查找段地址

    如何从给定的数据中找到段地址 物理地址 0x119B 有效地址 0x10AB 公式可能是什么 x86 16位实模式下的有效地址只是20位的偏移量部分段 偏移量 address https thestarman pcministry com
  • 正则表达式 - 将数字与常量进行比较

    如果我想匹配所有小于 2000 的数字 我使用正则表达式 01 1 0 9 3 如果我想匹配 1 到 5 之间的所有数字 我可以使用表达式 2 4 1 但是如果我想匹配 5 到 123 之间的所有数字怎么办 有语法吗 要匹配数字 gt 5
  • 混合内容 - 不安全的样式表

    在浏览器中 我收到以下错误 混合内容 页面位于 https www website com https www website com 通过 HTTPS 加载 但请求不安全的样式表 http fonts googleapis com css
  • 使用自定义错误处理程序时如何从中止命令访问错误消息

    使用 python Flask 服务器 我希望能够使用 abort 命令抛出 http 错误响应 并在正文中使用自定义响应字符串和自定义消息 app errorhandler 400 def custom400 error response
  • Python-LDAP 无法编译[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 所以我从源代码中获得了最新的 pyt
  • Django heroku 静态目录

    我是 Heroku 的新手 我尝试了一个没有 css 的简单 django 应用程序 但我刚刚在我的应用程序中添加了一个 css 文件 当我这样做时 git push heroku master 静态文件收集失败 gt Collecting
  • 无论数据源如何,使用 Django/Django Rest Framework 验证和保存数据的正确过程是什么?

    我有一个特定的模型 我想对其执行自定义验证 我想保证在创建新实例时始终存在至少一个标识符字段 这样就不可能在没有这些字段之一的情况下创建实例 尽管没有特别需要单独的字段 from django db import models class
  • Huggingface 分类与预测作斗争

    我正在微调 longformer 然后使用进行预测TextClassificationPipeline and model inputs 方法 我不确定为什么会得到不同的结果 import pandas as pd import datas
  • 解析器未共享给依赖的 sbt 项目?

    在这个似乎涉及 xsbt web plugin 的奇怪情况下 我收到错误 unresolved dependency play play json 2 10 2 2 SNAPSHOT not found 当加载时server子项目 依赖项和
  • 使用 Validating 事件和 ErrorProvider 进行验证 - 显示错误摘要

    当我的 WinForms 中存在错误时 如何显示消息框 数据无效 尝试过类似的东西 但它不起作用 if errorprovider1 null MessageBox Show Data is invalid 也许我必须使用 bool 来解决
  • 不区分大小写的三元搜索树

    我一直在使用三元搜索树 http en wikipedia org wiki Ternary search tree有一段时间 作为数据结构来实现一个自动完成下拉组合框 这意味着 当用户输入 fo 时 将显示下拉组合框 富 食物 足球 问题
  • 线性图表中 x 轴上的多条线未显示

    我有一个单轴折线图 用户会选择year从下拉菜单中选择loan type从另一个下拉菜单 然后图表应加载 12 个月的记录annual payment and scheduled payment 两者都是线性线 仪表板 vue div cl
  • 按发布日期列出的可用.packages

    是否可以从 R 中获取 CRAN 包的发布日期 我想获取 k 个最近发布的 CRAN 软件包的列表 或者获取 dd mm yy 日期之后发布的所有软件包的列表 类似于上面的信息available packages by date html
  • 用特征名称绘制特征重要性

    在 R 中 有预先构建的函数来绘制随机森林模型的特征重要性 但在python中似乎缺少这样的方法 我在寻找一种方法matplotlib model feature importances给了我以下内容 array 2 32421835e 0
  • 查找特定 ClearCase 分支中修改的所有文件?

    有没有办法创建一个视图 为我提供在特定 ClearCase 分支中修改的所有文件的快照 例如 假设我有两个分支 product 1 0 dev product migration 1 0 dev 第二个分支被认为是升级我们的核心框架依赖项的
  • istringstream、ostringstream 和 stringstream 之间有什么区别? / 为什么不在所有情况下都使用 stringstream?

    我什么时候用std istringstream std ostringstream and std stringstream为什么我不应该使用std stringstream在每种情况下 是否存在运行时性能问题 最后 这有什么不好的地方 而
  • Springboot嵌入tomcat绑定IPV6

    我正在使用 springboot 开发rest api 当我尝试部署它自动绑定到我们不想要的ipv6的jar时 我遇到了小问题 我知道我可以使用外部tomcat 但只是为了学习 我想知道是否可以强制它绑定到 ipv4 谢谢 萨吉德 您可以使
  • IFrame 和父级之间的跨文档消息传递问题

    我有一个应用程序在 外部 页面 不同域等 的 iframe 内运行 为了允许 iframe 和父级之间进行一些基本通信 我在父级页面上加载了我的一些脚本并使用postMessage进行一些跨文档消息传递 大多数时候 这种通信会按预期进行 但
  • 为什么直接比较两个枚举时会出现错误?

    我有一些代码正在移植到新平台 它开始给我一个关于比较两个不同枚举器列表中的两个枚举器的错误 我很困惑为什么它会给我一个关于此的错误 C 规范 6 7 2 2 的枚举规范部分指出 The identifiers in an enumerato
  • TreeMap.get() 即使键存在也返回 Null

    我试图从 TreeMap 获取数据 但即使键存在它也会返回 null HashCode 和 equals 仅基于单词 可比性基于频率 public static void main TreeMap