java - 以对象值作为键的 HashMap

标签 java object dictionary hash

假设我有 2 个节点列表(节点是一些可比较的对象,细节并不重要)。我想找到哪些节点出现在两个列表中 - 不一定是相同的 Node 对象,而是compareTo 返回 0 的节点。

例如,nodeA 在列表 A 上,nodeB 在列表 B 上。它们不是同一个 Node,但 nodeA.compareTo(nodeB) 将返回 0(相等)。

我想通过迭代列表 A 并将节点放入 HashMap/HashSet 中,然后迭代列表 B 并检查哪些节点已插入到 HashMap/HashSet 中来解决此问题。问题是,这不起作用,因为 HashMap 不会认为节点相等,除非它们是相同的实际节点。

如何解决这个问题?请注意,我不是寻找此问题的其他解决方案,而是为了了解是否(以及如何)在给定的示例场景中使用 HashMap、HashSet 或其他类似的数据结构。

最佳答案

您可以通过重写 Node 对象中的 equals 和 hashcode 方法以使用与compareTo 方法相同的标准来解决这个问题(如果我理解正确的话)。

关于java - 以对象值作为键的 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39406233/

相关文章:

java - 如何在单元测试中模拟 AmazonSQS 而不调用 SQS?

javascript - 从外部只读,从内部不可读取

javascript - 在 TypeScript 中,如何将属性添加到接口(interface)中的对象类型?

python - 为什么我可以使用按位 AND 检查列表是否包含字典的键?

python - 从 python dict 中默默地删除 key

java - Netbeans,java导入图像(res文件夹)

Java 反射 - 对象不是声明类的实例

java - 空 ArrayList 等于 null

javascript - 继承后无法构造 Javascript 对象(在对象内)

python - 无法将元组项与列表项匹配