首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我们能否在HashMap中使用对象类的实例作为键

我们能否在HashMap中使用对象类的实例作为键
EN

Stack Overflow用户
提问于 2020-04-27 12:51:29
回答 1查看 47关注 0票数 0

这个问题很简单,标题是:

我们可以在HashMap中使用对象类的实例作为键吗?

我说的不是使用任何自定义类作为键,而是使用Object类实例作为键。如果我们可以使用它,我们是否需要采取任何预防措施?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-27 12:55:00

是的,您可以使用对象的实例作为映射的键:

代码语言:javascript
运行
复制
Map<Object, SomeOtherType> myMap = new HashMap<>();

但这可能是一件危险的事情,因为这意味着任何类型的对象都可以用作关键对象,包括不可更改的对象,如果使用的是一个.equals(...).hashCode()稍后可以更改的对象,则会出现一些破坏地图的不良副作用。对于键可能可变的任何映射,这都是正确的。

根据地图API

注意:如果将可变对象用作映射键,则必须非常小心。如果对象的值以影响等于比较的方式更改,而对象是映射中的键,则不指定映射的行为。

总之:是的,这是可能的,但不要这样做。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61459340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档