【源码解析】HashMap扩容机制

对于很多Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些资料希望对Java开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。再分享一波我的Java面试真题+视频学习详解+技能进阶书籍《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!” />对于很多Java工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
摘要由CSDN通过智能技术生成

//赋值

hashMap.put(“id”,1);

hashMap.put(“name”,“张三”);

//取值

// Integer id = (Integer) hashMap.get(“id”);

// String name = (String) hashMap.get(“name”);

//获取所有的key值

Set keys=hashMap.keySet();//将map的key转换成set集合

Iterator keyInterator1=keys.iterator();//将keys转换成迭代器

System.out.println(“map的所有key值===============”);

while (keyInterator1.hasNext()){

System.out.println(keyInterator1.next() );

}

System.out.println(“map的所有value值===============”);

Collection values=hashMap.values();

Iterator keyInterator2=values.iterator();

while (keyInterator2.hasNext()){

System.out.println(keyInterator2.next());

}

请看结果:

是不是与上面的赋值对应上了

下面来介绍一下HashMap的性能以及安全问题

刚刚说了HashMap的存储是基于hash算法实现的,那他具体是如何实现的呢?当程序执行HashMap的put方法时,将调用String的 hashCode() 方法得到其 hashCode 值,在这里说明一下HashCode的因子是31,最后会根据计算出来的HashCode存放Map的元素.

扩容机制

我们先来看一下HashMap的初始化,HashMap提供了4中构造函数:

//无参构造

Map<String,Object> map1 = new HashMap<String, Object>();

//有参构造 传入初始容器大小

Map<String,Object> map2 = new HashMap<String, Object>(100);

//有参构造 传入初始容器以及负载因子

Map<String,Object> map3 = new HashMap<String, Object>(100,0.8f);

//有参构造 讲一个map赋值给一个新的map

Map<String,Object> map4 = new HashMap<String, Object>(map1);

我们现在分别来看一下这几个构造函数的源码:

1.new HashMap()

/**

  • Const

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值