当前位置: 首页 > news >正文

java的位桶是什么,hashmap中的存储桶究竟是什么?

Recently, in an interview I was asked, what exactly is a bucket in hashmap? Whether it is an array or a arraylist or what?

I got confused. I know hashmaps are backed by arrays. So can I say that bucket is an array with a capacity of 16 in the start storing hashcodes and to which linked lists have their start pointer ?

I know how a hashmap internally works, just wanted to know what exactly is a bucket in terms of data structures.

解决方案

No, a bucket is each element in the array you are referring to. In earlier Java versions, each bucket contained a linked list of Map entries. In new Java versions, each bucket contains either a tree structure of entries or a linked list of entries.

From the implementation notes in Java 8:

/*

* Implementation notes.

*

* This map usually acts as a binned (bucketed) hash table, but

* when bins get too large, they are transformed into bins of

* TreeNodes, each structured similarly to those in

* java.util.TreeMap. Most methods try to use normal bins, but

* relay to TreeNode methods when applicable (simply by checking

* instanceof a node). Bins of TreeNodes may be traversed and

* used like any others, but additionally support faster lookup

* when overpopulated. However, since the vast majority of bins in

* normal use are not overpopulated, checking for existence of

* tree bins may be delayed in the course of table methods.

...

相关文章:

  • 缴费java代码_基于jsp的物业管理缴费系统-JavaEE实现物业管理缴费系统 - java项目源码...
  • java实体类间的转换_java 实体类集合转换和实体类转换
  • mysql碎片整理 提速_MysqL碎片整理优化
  • 一张纸对折13次JAVA_一张纸最多折叠8次?她把纸折叠了13次后,发生了什么?
  • plsq卸载 删除注册表、_oracle安装及使用常见问题及解决方案
  • 陈伟伟java_java开发学习笔记之图书管理系统
  • java的list集合详解_【java集合】List详解
  • java bean 命名_fastjson(javabean命名)
  • php按钮控制css命令,php实现的CSS更新类实例
  • sigbus php,php-fpm里常用参数优化解析
  • php表单提交防注入,php表单提交数据的验证处理(防SQL注入和XSS攻击等)
  • java异常自定义返回信息,java – 捕获所有异常并返回Jersey中的自定义错误
  • matlab怎么写json文件,Matlab读取json文件
  • welch matlab,经典功率谱估计Welch法的MATLAB仿真分析.pdf
  • mac10.9 php开发环境,在mac os 10.9上部署Apache+PHP+Mysql开发环境
  • 【5+】跨webview多页面 触发事件(二)
  • Angular Elements 及其运作原理
  • CODING 缺陷管理功能正式开始公测
  • Java,console输出实时的转向GUI textbox
  • Js基础——数据类型之Null和Undefined
  • nodejs调试方法
  • python 装饰器(一)
  • Redis中的lru算法实现
  • text-decoration与color属性
  • vuex 学习笔记 01
  • Zsh 开发指南(第十四篇 文件读写)
  • 关于List、List?、ListObject的区别
  • 技术胖1-4季视频复习— (看视频笔记)
  • 聊聊flink的BlobWriter
  • 普通函数和构造函数的区别
  • 如何进阶一名有竞争力的程序员?
  • 因为阿里,他们成了“杭漂”
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 《码出高效》学习笔记与书中错误记录
  • 交换综合实验一
  • ​2021半年盘点,不想你错过的重磅新书
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (3)llvm ir转换过程
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (JS基础)String 类型
  • (二开)Flink 修改源码拓展 SQL 语法
  • (十)c52学习之旅-定时器实验
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .NET与 java通用的3DES加密解密方法
  • .net与java建立WebService再互相调用
  • @ConditionalOnProperty注解使用说明