扫码关注微信公众号

回复“面试手册”,获取本站PDF版

回复“简历”,获取高质量简历模板

回复“加群”,加入程序员交流群

回复“电子书”,获取程序员类电子书

当前位置: Java > Java集合高频面试题 > 27.关于HashMap的key一些问题

能否使用任何类作为HashMap 的 key?

可以,但要注意以下两点:

  • 如果类重写了 equals()方法,也应该重写hashCode()方法。
  • 最好定义key类是不可变的,这样key对应的hashCode()值可以被缓存起来,性能更好,这也是为什么String特别适合作为HashMapkey

为什么HashMap中String、Integer这样的包装类适合作为Key?

  • 这些包装类都是final修饰,是不可变性的, 保证了key的不可更改性,不会出现放入和获取时哈希值不同的情况。
  • 它们内部已经重写过hashcode(),equal()等方法。

如果使用Object作为HashMap的Key,应该怎么办呢?

  • 重写hashCode()方法,因为需要计算hash值确定存储位置
  • 重写equals()方法,因为需要保证key的唯一性。

点击面试手册,获取本站面试手册PDF完整版