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为null

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

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

system.out.print1n(map.get(null));// key存在

system.out.println(map.get(null));//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为null

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

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

system.out.print1n(map.get(null));// key存在

system.out.println(map.get(null));//key存在

}

}


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

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

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

image.png


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

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

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

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

相关文章
java202303java学习笔记第三十二天HashMap的使用2
java202303java学习笔记第三十二天HashMap的使用2
43 0
java202303java学习笔记第三十二天HashMap的使用
java202303java学习笔记第三十二天HashMap的使用
51 0
java202303java学习笔记第三十二天HashMap的使用1
java202303java学习笔记第三十二天HashMap的使用1
44 0
java202303java学习笔记第三十二天HashMap的使用3
java202303java学习笔记第三十二天HashMap的使用3
46 0
java202303java学习笔记第三十二天hashMap源码解析4
java202303java学习笔记第三十二天hashMap源码解析4
64 0
java202303java学习笔记第三十二天hashMap源码解析1
java202303java学习笔记第三十二天hashMap源码解析1
60 0
java202303java学习笔记第三十二天hashMap源码解析2
java202303java学习笔记第三十二天hashMap源码解析2
53 0
java202303java学习笔记第三十二天hashMap源码解析3
java202303java学习笔记第三十二天hashMap源码解析3
53 0
java202303java学习笔记第三十二天hashMap源码解析5
java202303java学习笔记第三十二天hashMap源码解析5
50 0
java202303java学习笔记第三十二天hashMap源码解析6
java202303java学习笔记第三十二天hashMap源码解析6
60 0