
本人大四,以前也开发过几个项目,Map相关集合也总用。但是从来没有研究过底层的实现,只知道杂用。结果在最开始的几次面试中一脸懵逼。认识到不足后,浅显的学习了一下,总结成一下几点。(如果写错了还望指正)
1.HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null值,因为key不能重复,所以只能有一个键为null,另外HashMap不能保证放入元素的顺序,它是无序的,HashMap是线程不安全的。需要同步可以用ConcurrentHashMap和 Collections.synchronizedMap(Map m),推荐使用ConcurrentHashMap,下次会提到它两
2.默认初始化大小16,负载因子0.75
容量是哈希表中桶(Entry数组)的数量,初始容量知识哈希表在创建时的容量。加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前你容量的乘积时,通过rehash方法将容量翻倍。
3
aaarticlea/png;base64,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" alt="" />
