我正在使用a HashMap并且我无法直接回答该get()方法在碰撞情况下的工作原理.
假设n > 1对象放在同一个键中.它们存放在一个LinkedList?它们是否被覆盖,以便只存在那个键中的最后一个对象?他们正在使用其他一些碰撞方法吗?
如果将它们放在a中LinkedList,有没有办法检索整个列表?如果没有,是否有其他内置的Java地图,我可以在其中执行此操作?
就我的目的而言,单独的链接是理想的,就像有冲突一样,我需要能够查看列表并获取有关其中所有对象的信息.在Java中最好的方法是什么?
感谢你的帮助!
Hashmap.put()的文档明确指出,"将指定值与此映射中的指定键相关联.如果映射先前包含键的映射,则替换旧值 "
如果您希望有一个与键关联的对象列表,则将列表存储为值.
请注意,'collision'通常是指HashMap的内部工作,其中两个键具有相同的哈希值,而不是对两个不同的值使用相同的键.
它们是否被覆盖,以便只存在那个键中的最后一个对象?
是的,假设您使用相同的密钥放置多个值(根据Object.equals,而不是Object.hashCode.)在Map.putjavadoc中指定:
如果映射先前包含键的映射,则旧值将替换为指定的值.
如果你想将一个键映射到多个值,你可能最好使用像Guava这样的东西ListMultimap,ArrayListMultimap特别是将键映射到值列表.(披露:我为Guava做出贡献.)如果你不能容忍第三方库,那么你真的必须拥有一个Map<Key, List<Value>>,尽管这可能会有点笨拙.
| 归档时间: |
|
| 查看次数: |
9819 次 |
| 最近记录: |