【发布时间】:2017-01-29 21:52:17
【问题描述】:
我在互联网上读到 put() 在发生冲突时会在链表的“头部”插入元素。
例如:
地图位置 1 有 1,0 -> 2,0 -> 3,0 -> 4,0 -> null
现在,我将在链表中插入一个元素 5,0(我希望 hash() 为元素 5 返回位置 1 的值)。插入后,位置 1 的链表将为 5,0 -> 1,0 -> 2,0 -> 3,0 -> 4,0 -> null
现在,我想将 3 的值更新为 30。因此我使用 map.put(KEY = 3, VALUE = 30);
我的问题是 put() 如何知道是更新还是插入?
要知道元素是否存在于链表中,它必须扫描链表。根据我在互联网上阅读的内容,如果发生冲突, put() 会在链表的“头部”插入元素。
提前致谢
【问题讨论】:
-
你的代码在哪里?
-
map.put(3, 30); -
答案是:“所有键都必须是唯一的”。如果地图被命令添加一个已经存在的键,它只是替换该值。请参阅我的代码示例。
-
Whatsmore,看起来你可能混淆了 LinkedList,它既是一个 List 又是一个双端队列,以及 HashMap。因为 LinkedList API 没有 put() 方法。它只有 add()、offer() 和 push(),具体取决于您要使用的模式...