HashMap 子类|学习笔记-阿里云开发者社区

开发者社区> 学堂小助手> 正文

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 采用的是成倍的扩充模式,即:每一次都扩充 ⒉倍容量

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
8958 0
MapReduce编程实现学习
MapReduce主要包括两个阶段:一个是Map,一个是Reduce. 每一步都有key-value对作为输入和输出。   Map阶段的key-value对的格式是由输入的格式决定的,如果是默认的TextInputFormat,则每行作为一个记录进程处理,其中key为此行的开头相对文件的起始位置,value就是此行的字符文本。
706 0
1116
文章
0
问答
来源圈子
更多
技术图谱:由专家组参与技术图谱的绘制与编写,知识与实践的结合让开发者们掌握学习路线与逻辑,快速提升技能 电子书:电子书由阿里内外专家打造,供开发者们下载学习,更与课程相结合,使用户更易理解掌握课程内容 训练营:学习训练营 深入浅出,专家授课,带领开发者们快速上云 精品课程:汇集知识碎片,解决技术难题,体系化学习场景,深入浅出,易于理解 技能自测:提供免费测试,摸底自查 体验实验室:学完即练,云资源免费使用
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《Nacos架构&原理》
立即下载
《看见新力量:二》电子书
立即下载
云上自动化运维(CloudOps)白皮书
立即下载