logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

HashMap 在 get 和 put 时,底层流程是怎样的?

永远是 2 的几次方(比如 16, 32, 64),这个位运算公式算出来的结果就和取模一模一样,属于极限压榨性能的骚操作。算 hash、定桶位、空桶插、有桶找、找到换、找不到插尾、检查树化和扩容。算 hash、定桶位、空桶返 null、有桶找、链表挨个问、红黑树高效找。比较复杂(比如比对长字符串),比较慢,所以放在最后用来当做“终极确认”。比较沉重,找不到要塞进去,拿不下还要换大房子(扩容)。,能

#哈希算法#算法#java
HashMap 的 remove 方法是如何实现的?

你给它一个 Key,它先噼里啪啦一顿计算,算出这个 Key 该存放在数组的哪个格子里(桶位)。如果这个格子本来就是空的,说明根本没这个人,直接返回。如果刚才删的是红黑树里的节点,删完之后 HashMap 会数一数这棵树上还剩几个节点。成功删除后,它会把刚才删掉的那个数据的值(Value)返回给你,让你知道你到底删了个啥。,它就会觉得“杀鸡焉用牛刀,树太小了维护起来太累”,就会调用底层方法把这棵树。

#java#开发语言
    共 32 条
  • 1
  • 2
  • 3
  • 4
  • 请选择