与HashMap一样,内部存在用于保存键值对的存储桶。
对于具有相同哈希码的密钥的情况。
例如,“abcdef”和“abcdfG”的哈希码是相同的。
map.put("abcdef", 1);
map.put("abcdfG", 2);
当它们被放入哈希映射时,会创建Entry对象,其中两者都放在同一个桶中,而下一个Entry则指向另一个。
问题是如何表现?当我们做map.get(“abcdef”);它会给1还是2
答案 0 :(得分:1)
map.get("abcdef")
将返回正确的值(1),因为它将使用equals
方法将存储桶中的每个键(与键的hashCode匹配)与给定键进行比较,直到它找到完全匹配。
答案 1 :(得分:1)
它将首先使用hashcode()
来解析存储桶,然后它将遍历平衡树以获得准确的密钥,然后一旦找到确切的密钥就会获得值
取决于您使用的运行时版本,它将是LinkedList或Balanced tree
答案 2 :(得分:1)
内部存储桶仅供java使用,以帮助减少搜索所需的项目数。您可以将所有内容推送到同一个存储桶中(使用不同的密钥)。结果只是你的程序会变慢。