HashMap 子类|学习笔记

简介: 快速学习 HashMap 子类

开发者学堂课程【Java高级编程:HashMap子类】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/20/detail/416


HashMap子类


HashMap 是 Map 接口之中最为常见的一个子类,该类的主要特点是无序存储,通过 Java 文档首先来观察一下 HashMap 子类的定义形式:

​public class HashMap K.V>​

​extends AbstractMap K.V>​

​implements Map ​​<​​K,V> , Cloneable,Serializable​

该类的定义继承形式符合之前的集合定义形式,依然提供有抽象类并

且依然需要重复实现 Map 接口。

图片3.png


范例:观察 Map 集合的使用

​package cn.mldn. demo;​

​import java.util.HashMap;​

​import java.util.Map;​

​public class JavaAPIDemo ​​{ ​

​public static void main(String[] args) throws Exception { ​

​Map<String, Integer> map = new HashMap<String,Integer>()​

​map.put ( "one",1) ;​

​map.put( "two",2) ;​

​map.put( "one",101) ;​​//​​key重复map.put( nu11, ) ; ​

​//​​key为nul​​l​

​map.put( "zero", nul​​l​​) ; ​​//​​value为null​

​system.out.print1n(map.get( "one" ) );​​//​​key存在​

​system.out.print1n(map.get(nu​​ll​​));​​//​​ key存在​

​system.out.println(map.get(nul​​l​​));​​//​​key存在​

​}​

​}​

以上的操作形式为 Map 集合使用的最标准的处理形式,通过代码可以发现,通过HashMap 实例化的 Map 接口可以针对 key 或 value 保存 null 的数据,

同时也可以发现即便保存数据的 kev 重复,那么也不会出现错误,而是出现内容的替换。

但是对于 Map 接口中提供的 put() 方法本身是提供有返回值的,那么返回值指的是在重复 key 的情况下返回旧得 value。


范例:观察 put() 方法

​package cn.mldn. demo;​

​import java.util.HashMap;​

​import java.util.Map;​

​public class JavaAPIDemo ​​{ ​

​ ​

​public static void main(String[] args) throws Exception { ​

​Map<String, Integer> map = new HashMap<String,Integer>()​

​map.put ( "one",1) ;​

​map.put( "two",2) ;​

​map.put( "one",101) ;​​//​​key重复map.put( nu11, ) ; ​

​//​​key为nul​​l​

​map.put( "zero", nul​​l​​) ; ​​//​​value为null​

​system.out.print1n(map.get( "one" ) );​​//​​key存在​

​system.out.print1n(map.get(nu​​ll​​));​​//​​ key存在​

​system.out.println(map.get(nul​​l​​));​​//​​key存在​

​}​

​}​


在设置了相同的 key 的内容的时候 put() 方法会返回原始的数据内容。

清楚了 HashMap 的基本功能之后下面就需要来研究一下 HashMap 之中给出的源代码。

HashMap 之中肯定需要存储大量的数据,那么对于数据的存储

image.png


面试题:在进行 HashMap 的put() 操作的时候,如何实现容量扩充的?

在 HashMap 类里面提供有一个 “DEFAULT_INITIAL_CAPACITY” 常量,作为初始化的容量配置,而后这个常量的默认大小为 16 个元素,也就是说默认可以保存的最大内容是 16;

当保存的内容的容量超过了与个阈值(DEFAULT_LOAD_FACTOR = 0.75f), 相当于“容量*阈值=12”保存 12 个元素的时候就会进行容量的扩充;

在进行扩充的时候HashMap 采用的是成倍的扩充模式,即:每一次都扩充 ⒉倍容量

​

            </div>
相关文章
java202303java学习笔记第三十二天HashMap的使用2
java202303java学习笔记第三十二天HashMap的使用2
216 0
java202303java学习笔记第三十二天HashMap的使用
java202303java学习笔记第三十二天HashMap的使用
186 0
java202303java学习笔记第三十二天HashMap的使用1
java202303java学习笔记第三十二天HashMap的使用1
142 0
java202303java学习笔记第三十二天HashMap的使用3
java202303java学习笔记第三十二天HashMap的使用3
181 0
java202303java学习笔记第三十二天hashMap源码解析4
java202303java学习笔记第三十二天hashMap源码解析4
272 0
java202303java学习笔记第三十二天hashMap源码解析1
java202303java学习笔记第三十二天hashMap源码解析1
256 0
java202303java学习笔记第三十二天hashMap源码解析2
java202303java学习笔记第三十二天hashMap源码解析2
261 0
java202303java学习笔记第三十二天hashMap源码解析3
java202303java学习笔记第三十二天hashMap源码解析3
190 0
java202303java学习笔记第三十二天hashMap源码解析5
java202303java学习笔记第三十二天hashMap源码解析5
162 0
java202303java学习笔记第三十二天hashMap源码解析6
java202303java学习笔记第三十二天hashMap源码解析6
195 0