这个问题很简单,标题是:
我们可以在HashMap中使用对象类的实例作为键吗?
我说的不是使用任何自定义类作为键,而是使用Object类实例作为键。如果我们可以使用它,我们是否需要采取任何预防措施?
发布于 2020-04-27 12:55:00
是的,您可以使用对象的实例作为映射的键:
Map<Object, SomeOtherType> myMap = new HashMap<>();但这可能是一件危险的事情,因为这意味着任何类型的对象都可以用作关键对象,包括不可更改的对象,如果使用的是一个.equals(...)或.hashCode()稍后可以更改的对象,则会出现一些破坏地图的不良副作用。对于键可能可变的任何映射,这都是正确的。
根据地图API
注意:如果将可变对象用作映射键,则必须非常小心。如果对象的值以影响等于比较的方式更改,而对象是映射中的键,则不指定映射的行为。
总之:是的,这是可能的,但不要这样做。
https://stackoverflow.com/questions/61459340
复制相似问题