Java:使用doubleKey类型的地图,如何制作正确的hashCode()?

一月

我有一个MultiKey对象作为Map的键。

密钥由名称(字符串)和ID(整数)组成。

必须履行以下合同:如果两个密钥的名称相同或两个密钥的ID相同,则密钥必须相等。

我必须如何实现hashCode()函数,以便不违反此合同?可能吗?

实现平等很容易...我只是说:

if (name.equals(other.name) || id == other.id)
    return true;

但这是行不通的,因为hashMap仅使用hashCode()而不关心equals()...

例子:

Map A = [ ("tom",1)=TOMAS, ("eli",2)=ELIAS ]

A.get(new Key("tom",0))    should return TOMAS
A.get(new Key("",1))       should return TOMAS
A.get(new Key("eli",2))    should return ELIAS
...
用户名

我能看到的唯一方法是为TreeSet建立一个集合,以缓存键的hashCodes。然后使用遇到的第一个等于值作为当前执行的hashCode值。问题是:
一。如果有许多不同的键,则可能会使用大量额外的内存。
b。hashCode值在程序的多次执行中不一定是一致的。
C。如果是多线程的,则需要针对缓存的hashCodes进行同步。

如果执行此操作,则可以像以往一样简单地将名称和ID组合在一起生成hashCode。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用boost :: variant库制作地图。如何以正确的类型存储和显示事物?

来自分类Dev

使用boost :: variant库制作地图。如何以正确的类型存储和显示事物?

来自分类Dev

如何制作圆形地图?使用谷歌地图

来自分类Dev

如何正确使用地图?

来自分类Dev

如何制作地图的列对?

来自分类Dev

如何制作地图的列对?

来自分类Dev

如何制作.class的地图?

来自分类Dev

如何使用PHP制作正确的数组格式

来自分类Dev

如何正确使用地图和地图!方法

来自分类Dev

如何使用SVG地图形状制作可点击链接

来自分类Dev

React Native:如何使用本地图像制作 Listview

来自分类Dev

如何制作正确的文件?

来自分类Dev

如何从地图与Java 8流API列表制作一张地图

来自分类Dev

使用树制作站点地图

来自分类Dev

使用树制作站点地图

来自分类Dev

正确使用Scala地图

来自分类Dev

如何使类的子类返回正确的Java类型

来自分类Dev

如何使用子查询制作正确的查询构建器

来自分类Dev

如何制作尺寸正确的图像以在我的Android应用中使用

来自分类Dev

如何使用 Numpy.gradient 制作正确的渐变图

来自分类Dev

如何在Collapsingtoolbarlayout中正确使用地图片段

来自分类Dev

如何使用地图正确键入多键索引

来自分类Dev

如何在aspx页面中正确使用谷歌地图

来自分类Dev

如何使用react正确编写条件类型?

来自分类Dev

如何对str类型的对象正确使用assertRaises()

来自分类Dev

如何正确使用类类型的参数?

来自分类Dev

如何使我用Java制作的程序知道某些文件类型?

来自分类Dev

如何使用Java制作Blockly块的实例?

来自分类Dev

如何使用Java jsonGenerator制作json文件?

Related 相关文章

热门标签

归档