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>
相关文章
|
8月前
|
Java
Java 中Map接口及其实现子类HashMap,Hashtable,Properties,TreeMap类的详解(二)
Java 中Map接口及其实现子类HashMap,Hashtable,Properties,TreeMap类的详解
25 0
|
8月前
|
Java
Java 中Map接口及其实现子类HashMap,Hashtable,Properties,TreeMap类的详解(一)
Java 中Map接口及其实现子类HashMap,Hashtable,Properties,TreeMap类的详解
39 0
|
10月前
|
存储 Java
Java中的Set接口(实现类HashSet和HashSet子类LinkedHashSet)
Java中的Set接口(实现类HashSet和HashSet子类LinkedHashSet)
|
存储 算法 NoSQL
【Java集合】1 浅析hashCode方法
【Java集合】1 浅析hashCode方法
86 0
【Java集合】1 浅析hashCode方法
|
存储 Java 开发者
LinkedHashMap 子类|学习笔记
快速学习 LinkedHashMap 子类
LinkedHashMap 子类|学习笔记
|
Java 开发者
HashSet 子类|学习笔记
快速学习 HashSet 子类
104 0
HashSet 子类|学习笔记
|
存储 Java 开发者
Hashtable 子类|学习笔记
快速学习 Hashtable 子类
Hashtable 子类|学习笔记
|
存储 Java 开发者
ArrayList 子类| 学习笔记
快速学习 ArrayList 子类
109 0
ArrayList 子类| 学习笔记
|
机器学习/深度学习 Java 开发者
LinkedList 子类|学习笔记
快速学习 LinkedList 子类
LinkedList 子类|学习笔记
|
存储
简单数据结构类——Hashtable
简单数据结构类——Hashtable
91 0