字符串作为HashMap中的键

use*_*621 3 java hashmap

我曾经看到,只有String被用作HashMap中的一个键.虽然put()方法将Object作为参数.它的重要性如何.如果其他任何对象也可以用作Key?请提供答案.

Gre*_*osz 8

任何提供有意义实现的对象hashCode()都是映射中的完美关键候选:请参阅了解HashMap中equals和hashCode的工作原理.

另外,正如@Jon所提到的,地图中的所有键都应该是相同的类型.

编辑:当然,你需要实现两个 equals()hashcode().我认为与另一个问题的链接标题清楚明了.但是,愚蠢的实施hashcode()只会给你带来堕落HashMap,表现不佳.

编辑2:正如@Adrian在他的回答中提到的,泛型将帮助你约束地图的键和值的类型.

参考文献:


aku*_*uhn 6

原始HashMap的确会接受任何对象作为关键.但是,指定要在地图中使用哪种键和值是一种很好的方式

Map<String, Whatever> map = new HashMap<String, Whatever>();
Run Code Online (Sandbox Code Playgroud)

如果你这样做,该put()方法只接受字符串.

 

注意:如果您选择使用自己的一个类作为键,请确保该类既实现两者equals,也不实现hashCode任何一个!