前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Java 8 HashMap 详解系列]6.HashMap 的扩容 resize() 原理

[Java 8 HashMap 详解系列]6.HashMap 的扩容 resize() 原理

作者头像
一个会写诗的程序员
发布2020-03-24 16:52:58
8510
发布2020-03-24 16:52:58
举报

6.HashMap 的扩容 resize() 原理

我们先来上一段测试代码,直观感受一下 HashMap 的真实的扩容过程:

代码语言:javascript
复制
package i

import java.util.*

/**
 * @author: Jack
 * 2020-03-21 21:55
 */
fun main(args: Array<String>) {
    val map = HashMap<String, Int>(2)
    val clz = map::class.java
    val capacity = clz.getDeclaredMethod("capacity")
    capacity.isAccessible = true
    val size = clz.getDeclaredMethod("size")
    size.isAccessible = true

    println("capacity=${capacity.invoke(map)}")
    println("size=${size.invoke(map)}")
    println(map)

    map["a"] = 1
    println("capacity=${capacity.invoke(map)}")
    println("size=${size.invoke(map)}")
    println(map)

    map["b"] = 2
    println("capacity=${capacity.invoke(map)}")
    println("size=${size.invoke(map)}")
    println(map)

    map["c"] = 3
    println("capacity=${capacity.invoke(map)}")
    println("size=${size.invoke(map)}")
    println(map)

    map["ab"] = 12
    println("capacity=${capacity.invoke(map)}")
    println("size=${size.invoke(map)}")
    println(map)

    map["bc"] = 23
    println("capacity=${capacity.invoke(map)}")
    println("size=${size.invoke(map)}")
    println(map)

    map["abc"] = 123
    println("capacity=${capacity.invoke(map)}")
    println("size=${size.invoke(map)}")
    println(map)

    map["abcd"] = 1234
    println("capacity=${capacity.invoke(map)}")
    println("size=${size.invoke(map)}")
    println(map)

}

输出:

代码语言:javascript
复制
capacity=2
size=0
{}
capacity=2
size=1
{a=1}
capacity=4
size=2
{a=1, b=2}
capacity=4
size=3
{a=1, b=2, c=3}
capacity=8
size=4
{a=1, ab=12, b=2, c=3}
capacity=8
size=5
{a=1, ab=12, bc=23, b=2, c=3}
capacity=8
size=6
{a=1, ab=12, bc=23, b=2, c=3, abc=123}
capacity=16
size=7
{a=1, ab=12, bc=23, b=2, c=3, abc=123, abcd=1234}

Kotlin 开发者社区

作者:一个会写诗的程序员

链接:https://cloud.tencent.com/developer/article/1603892

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 6.HashMap 的扩容 resize() 原理
  • Kotlin 开发者社区
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档