Java - TreeSet 和 hashCode()

2024-04-27

我有一个简单的问题TreeSet http://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html收藏品和hashCode http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--方法。我有一个TreeSet我正在向其中添加对象,在添加对象之前,我会检查它是否存在于TreeSet使用contains http://docs.oracle.com/javase/8/docs/api/java/util/TreeSet.html#contains-java.lang.Object- method.

我有 2 个不同的对象,每个对象使用我的 hashCode 方法的实现生成一个不同的 hashCode,示例如下:

public int hashCode()
{
    int hash = 7;
    hash = hash * 31 + anAttribute.hashCode();
    hash = hash * 31 + anotherAttribute.hashCode();
    hash = hash * 31 + yetAnotherAttribute.hashCode();
    return hash;
}

特定运行的 hashCode 为:76126352 和 76126353(对象仅在一个属性中相差一位数字)。

即使 hashCode 不同, contains 方法也会为这些对象返回 true。有什么想法吗?这确实令人困惑,我们将不胜感激。


TreeSet不使用hashCode根本不。它使用任一compareTo或您传递给构造函数的比较器。它被 contains 之类的方法用来查找集合中的对象。

所以你的问题的答案是你的compareTo方法或你的Comparator被定义,以便有问题的两个对象被认为是相等的。

来自javadoc:

TreeSet 实例执行所有操作 使用其元素比较 CompareTo(或比较)方法,所以两个 被视为相等的元素 方法是,从 设,相等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java - TreeSet 和 hashCode() 的相关文章

  • 我是否需要安装 SQLite 才能使 SQLiteJDBC 正常工作?

    我想我只是没有 明白 如果我的计算机上尚未安装 SQLite 并且我想编写一个使用嵌入式数据库的 Java 应用程序 并且我将 SQLiteJDBC JAR 下载 导入到我的项目中 那么这就是我所需要的吗 或者 我是否需要先安装 SQLit
  • 如何在java中将数组值排序为循环格式?

    我的数组值如下 String value 1 2 3 4 5 6 7 8 9 10 假设如果我将值 5 传递给 tat 数组 它应该按如下顺序排序 5 6 7 8 9 10 1 2 3 4 怎么办 有人帮忙吗 感谢你 你需要的就是所谓的轮换
  • 两个整数乘积的模

    我必须找到c c a b mod m a b c m 是 32 位整数 但 a b 可以超过 32 位 我正在尝试找出一种计算 c 的方法 而不使用 long 或任何 gt 32 位的数据类型 有任何想法吗 如果m是质数 事情可以简化吗 注
  • eclipse行号状态行贡献项是如何实现的?

    我需要更新状态行编辑器特定的信息 我已经有了自己的实现 但我想看看 eclipse 贡献项是如何实现的 它显示状态行中的行号 列位置 谁能指点一下 哪里可以找到源代码 提前致谢 亚历克斯 G 我一直在研究它 它非常复杂 我不确定我是否了解完
  • 为什么即使我的哈希码值相同,“==”也会返回 false

    我写了一个像这样的课程 public class HashCodeImpl public int hashCode return 1 public static void main String args TODO Auto generat
  • 如何检查某个元素是否存在于一组项目中?

    In an ifJava中的语句如何检查一个对象是否存在于一组项目中 例如 在这种情况下 我需要验证水果是苹果 橙子还是香蕉 if fruitname in APPLE ORANGES GRAPES Do something 这是一件非常微
  • 将非 Android 项目添加到 Android 项目

    我在 Eclipse 中有三个项目 Base Server 和 AndroidClient Base和Server是Java 1 7项目 而AndroidClient显然是一个android项目 基础项目具有在服务器和 Android 客户
  • 如何在java中将日期格式从YYMMDD更改为YYYY-MM-DD? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我从机器可读代码中获取日期格式为 YYMMDD 如何将其更改为 YYYY MM DD 例如我收到 871223 YYMMDD 我想把它改成
  • Sun 在 EDT 之外做 GUI 工作的演示?

    我正在看SplashDemo java http download oracle com javase tutorial uiswing examples misc SplashDemoProject src misc SplashDemo
  • 在Java中运行bat文件并等待

    您可能会认为从 Java 启动 bat 文件是一项简单的任务 但事实并非如此 我有一个 bat 文件 它对从文本文件读取的值循环执行一些 sql 命令 它或多或少是这样的 FOR F x in CD listOfThings txt do
  • Java继承,扩展类如何影响实际类

    我正在查看 Sun 认证学习指南 其中有一段描述了最终修饰符 它说 如果程序员可以自由地扩展我们所知的 String 类文明 它可能会崩溃 他什么意思 如果可以扩展 String 类 我是否不会有一个名为 MyString 的类继承所有 S
  • 使用 Elastic Beanstalk 进行 Logback

    我在使用 Elastic Beanstalk 记录应用程序日志时遇到问题 我正在 AWS Elastic Beanstalk 上的 Tomcat 8 5 with Corretto 11 running on 64bit Amazon Li
  • 如何区分从 Saxon XPathSelector 返回的属性节点和元素节点

    给定 XML
  • Spring @Cacheable 和 @Async 注解

    我需要缓存一些异步计算的结果 具体来说 为了克服这个问题 我尝试使用 Spring 4 3 缓存和异步计算功能 作为示例 我们采用以下代码 Service class AsyncService Async Cacheable users C
  • 部署 .war 时出现 Glassfish 服务器错误:部署期间发生错误:准备应用程序时出现异常:资源无效

    我正在使用以下内容 NetBeans IDE 7 3 内部版本 201306052037 爪哇 1 7 0 17 Java HotSpot TM 64 位服务器虚拟机 23 7 b01 NetBeans 集成 GlassFish Serve
  • 将 JScrollPane 添加到 JFrame

    我有一个关于向 Java 框架添加组件的问题 我有一个带有两个按钮的 JPanel 和一个添加了 JTable 的 JScrollPane 我想将这两个添加到 JFrame 中 我可以将 JPanel 添加到 JFrame 或将 JScro
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • Java RMI - 客户端超时

    我正在使用 Java RMI 构建分布式系统 它必须支持服务器丢失 如果我的客户端使用 RMI 连接到服务器 如果该服务器出现故障 例如电缆问题 我的客户端应该会收到异常 以便它可以连接到其他服务器 但是当服务器出现故障时 我的客户端什么也
  • 由 Servlet 容器提供服务的 WebSocket

    上周我研究了 WebSockets 并对如何使用 Java Servlet API 实现服务器端进行了一些思考 我没有花费太多时间 但在使用 Tomcat 进行一些测试时遇到了以下问题 如果不修补容器或至少对 HttpServletResp
  • Spring RESTful控制器方法改进建议

    我是 Spring REST 和 Hibernate 的新手 也就是说 我尝试组合一个企业级控制器方法 我计划将其用作未来开发的模式 您认为可以通过哪些方法来改进 我确信有很多 RequestMapping value user metho

随机推荐

  • Jenkins 在解析 pom 时失败

    我的 Jenkins 服务器上的一项作业出现问题 在 pom 解析期间失败并显示以下消息 Parsing POMs Modules changed recalculating dependency graph workspace java
  • 水平计数加工织物中的白色簇

    我对织物材质进行了处理 得到如下图所示的图像 原图 处理后的图像 现在 我想找到连续的白色簇的数量 如果所有簇都是均匀且完全水平的 我将运行一个循环来计算强度的上升和下降 以找到簇的数量 但事实并非如此 如果我通过上述方法取几行的中值 平均
  • 如何合并 jQuery 数据表 excelHtml5 中列的匹配值

    当我从数据表导出 Excel 时 我无法合并 col 值 由于列的值B named Category 需要合并重复值 我是编程新手 感谢任何帮助 这是我的我的jsfiddle https jsfiddle net t1j6rzg8 2 这是
  • Drupal - 使用引导程序检查 Drupal 之外的登录用户不起作用

    我正在绞尽脑汁地想弄清楚这个问题 在 Drupal 目录之外时 我无法让 Bootstrap 正常工作 如果我在 Drupal 目录中运行此代码 它可以正常工作 但向上一级不起作用 我的 Drupal 路径是 public html dru
  • 博耶摩尔算法的实现?

    有 C 语言的 Boyer Moore 字符串搜索算法的工作示例吗 我浏览了一些网站 但它们似乎有很多问题 包括维基百科 Thanks 子字符串搜索算法的最佳网站 http igm univ mlv fr lecroq string htt
  • 为什么不能使用与数组声明分开的数组初始化语法?

    我可以用一个整数来做到这一点 int a a 5 但我不能用整数数组来做到这一点 int a a 1 2 3 4 5 Why not 澄清 我不是在寻找正确的语法 我可以查找 我知道这有效 int a 1 2 3 4 5 这相当于 int
  • 即使没有任何更改,Makefile 也始终不是最新的

    我有一个包含两个文件夹的目录 src and binmakefile 位于根目录 即使没有更改 此 makefile 也会持续编译 不是最新的 我在这个 makefile 中遗漏了什么吗 all make a b a src a cpp g
  • Xcode:“此时无法安装此应用程序。”

    使用我的第一个应用程序进行学习 一切顺利 但 Xcode 遇到了问题 当我尝试在 iPhone 模拟器上运行该应用程序时 总是弹出此消息 此时无法安装此应用程序 怎么了 尝试构建应用程序时没有错误 已尝试清理构建 重新安装 Pod 重新启动
  • Team City 构建失败不返回失败代码

    我有一个在 TeamCity 上运行 Invoke MsBuild 的 powershell 脚本 在构建过程中 我看到其中一个项目出现 警告 构建失败 然而 teamcity 最后表示构建成功 如何强制 TC 退出并显示错误代码或至少报告
  • 如何在 rspec 请求规范中设置请求标头?

    在控制器规范中 我可以像这样设置 http 接受标头 request accept application json 但在请求规范中 请求 对象为零 那么我在这里该怎么做呢 我想将 http 接受标头设置为 json 的原因是这样我可以这样
  • corona sdk中拖动物理对象

    我尝试在场景中拖动重力 0 0 的动态主体 我有一个主体类型为动态的正方形 以及一个主体类型为静态的图像 但是当将方形拖动到图像上时 它会产生一点力 但是可以超出图像并传递到另一边 如图所示 这是我拖动正方形的代码 local functi
  • 如何使用Intent限制录音时间?

    使用意图时如何限制录制 我尝试了这段代码 Intent intent new Intent MediaStore ACTION VIDEO CAPTURE intent putExtra android intent extra durat
  • Web 服务 Android 应用程序:无法序列化 1.0

    P S 我看过类似的问题 但无法理解该怎么做 他们谈论使用元帅类 我似乎无法理解 我正在创建一个安卓应用 to 使用 JAX WS 我正在使用ksoap 2图书馆同样如此 我在一系列文本字段中获取用户的输入 并将这些输入传递到 WebSer
  • 将自定义标头值传递给 IdentityServer4 Login

    当用户尝试登录时 我尝试将自定义标头值 无 cookie 传递给 IdentityServer4 这是所有设置的方式 自定义身份验证属性 AttributeUsage AttributeTargets Class AttributeTarg
  • 根据 Excel 模板修改 Outlook 电子邮件的 HTMLBody

    我正在尝试根据模板从 Excel VBA 修改 Outlook 电子邮件的 HTML 正文 我的代码是 Sub Email Button Dim OutApp As Outlook Application Dim OutMail As Ou
  • Android 模拟器无法在 MAC 上运行

    下载 Android Studio 后 我一直在尝试使用 Android 模拟器 我以前使用过旧的三星 S4 但需要与 Marshmallow 兼容的设备才能实现某些功能 我看到的问题是 模拟器不运行 Android 屏幕显示好像正在准备启
  • (python) matplotlib pyplot show() .. 是否阻塞?

    我遇到了这个麻烦show 一遍又一遍 我确信我做错了什么 但不确定做我想做的事情的 正确 方法 我认为 我想要的是某种方法来阻塞主线程 直到 GUI 线程中发生事件 这样的事情第一次起作用 from matplotlib import py
  • Couchbase 网络错误 16,node.js 中套接字断言失败

    我有以下 node js 脚本 几天前运行良好 但现在出现此错误 syd HP Notebook Desktop node db js connected to database Error Network error code 16 no
  • Android:onSensorChanged 的​​替代方案?当手机背面放在桌子上时(没有移动时)没有加速度计数据

    所以我使用这段代码来获取加速度计数据 当我在 DDMS 模式下检查打印语句正在打印的内容时 我注意到当手机不动时没有打印任何内容 IE 它在桌上 我认为原因是当手机不移动时不会调用 onSensorChanged 然后当手机再次开始移动时调
  • Java - TreeSet 和 hashCode()

    我有一个简单的问题TreeSet http docs oracle com javase 8 docs api java util TreeSet html收藏品和hashCode http docs oracle com javase 8