开发者社区> 问答> 正文

HashMap中hash桶的疑惑

1.hash bucket,据说是一个单向链表,可不可以说是一个栈?
2.HashMap::get() 可以获取 bucket 里面的第一个元素,那其它元素又怎么获取?
3.HashMap::size() 是返回 bucket 的个数还是长度大于 0 的 bucket 的个数?

展开
收起
蛮大人123 2016-03-04 17:27:01 3410 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    1.是一个单向链表,不是栈,栈和链表区别很大。
    2.get 是取得和你 key 匹配的那个 valuebucket 链表里面存储的是 hash 值相同的 (key,value) 对,比如 key1 和 key2 计算得到的 hash 值相同,那么就把他们扔到一个bucket里面,当你 get(key1) 时,那么遍历对应的 bucket 链表,直到找到对应的 key1,返回 value1.
    3.size() 是所有元素的个数,而不是 bucket 的个数。
    你可以去看下 HashMap 的实现,比如 JDK 里面的,就很清楚了。

    2019-07-17 18:52:37
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载