繁体   English   中英

Java HashMap和对象键

[英]Java HashMap and Object keys

LinkedHashMap<Long, String> myHashMap = new LinkedHashMap<>();
myHashMap.put(new Long(1), "A Value");

问题

  1. 密钥是参考还是副本?
  2. 如果我写String aValue = myHashMap.get(new Long(1)); ,我会收回"A Value"吗? 还是我刚刚查询了另一个对象(引用),因此会出现错误?
  1. 该映射存储对作为参数传递的对象的引用的副本。 没有对象的副本。
  2. 是的,如记录所示,您将获得“价值”。 Map将其键与equals()而不是==进行比较(IdentityHashMap除外)。 顺便说一句,您可以轻松测试一下。
  1. 密钥是对同一实例的引用。
  2. 您将获得"A Value" ,因为Long已被覆盖

    • equals()return value == obj.longValue() ),
    • hashCode()return Long.hashCode(value) )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM