HashMap的学习

文章目录

  • HashMap
    • 特点
    • 原理示意图
    • 常用方法
    • 遍历元素
  • LinkedHashMap

HashMap

特点

1.世界上查询速度最快的数据结构
2.增删速度也很快
3.加载因子是集合存放的元素数量和散列数组长度的比值,建议加载因子 0.75,超过会自动扩容并且重新散列(旧的数据重新计算数组索引值)
4.散列数组初始的长度是 16
5.无序存放
6.底层使用数组+单向链表(JDK 1.7 之后的版本,散列桶的元素超过 8 个,会换成红黑树数据结构)
7.数组虽然有索引值,但是存放的时候不是直接根据索引值的自然顺序存放,而是通过散列算法计算出元素的数组索引值后再根据索引值来存放,查询元素也一样。所以不能根据索引值直接存放和查询元素。也没有与索引值相关的方法。
8.数组+链表(或者红黑树)的整体数据结构也叫散列表或哈希表
9.key不允许重复,可以保存一个null;value可以重复,且可以保存多个null

原理示意图

在这里插入图片描述

常用方法

public void clear(),从此映射中移除所有映射关系(可选操作)。
public boolean containsKey(Object key),如果此映射包含指定键的映射关系,则返回 true
public boolean containsValue(Object value),如果此映射将一个或多个键映射到指定值,则返回 true
public Set<Map.Entry<K,V>> entrySet(),返回此映射中包含的映射关系的 Set 视图。
public boolean equals(Object o),比较指定的对象与此映射是否相等。
public V get(Object key),返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
public int hashCode(),返回此映射的哈希码值。
public boolean isEmpty(),如果此映射未包含键-值映射关系,则返回 true
public Set<K> keySet(),返回此映射中包含的键的 Set 视图。
public V put​(K key,V value),将指定的值与此映射中的指定键相关联,如果 map 中没有指定的 key,返回空值,否则返回被覆盖的 value
public void putAll(Map<? extends K,? extends V> m),从指定映射中将所有映射关系复制到此映射中(可选操作)。
public V remove(Object key),如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
public int size(),返回此映射中的键-值映射关系数。
public Collection<V> values(),返回此映射中包含的值的 Collection 视图。

遍历元素

1.可以直接使用方法 values 获取 Map 中的值,然后使用 Collection 集合的迭代方式进行遍历
2.可以先使用方法 keySet 获取 Map 中的键,再使用 Collection 集合的迭代方式遍历取出每个键,再通过方法 get 获取对应的值
3.可以先使用方法 entrySet 获取 Map 中的所有键值对,然后通过 Collection 集合的迭代方式遍历取出每个 entry 对象,再通过 entry 对象的方法 getKey 和 getValue 获取每个 entry 对象的键值对

LinkedHashMap

HashMap 的区别就是 LinkedHashMap 额外使用双向链表存放元素的顺序,所以存放和查询时的顺序一致

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

特权级概述(哥子就想知道CPU是如何验证特权级的)GATE+TSS

【0】README text description from orange’s implemention of a os . 【1】特权级概述 当当前代码段试图访问一个段或者门时&#xff0c;目标段的DPL将会和 CPL 以及段或门选择子的RPL相比较&#xff0c;如何比较&#xff1a;&#xff08;这里是干货&#xff09; &#xf…

java设计模式 订阅模式_Java中的复合设计模式

java设计模式 订阅模式当我们必须使用对象的树状分层结构时&#xff0c;复合设计模式非常有用。 它使我们能够统一对待单个对象和对象组成。 它属于结构设计模式的范畴&#xff0c;因为它将对象组合成树形结构以表示部分整个层次结构。 UML表示形式&#xff1a; 复合模式的UM…

python 短网址_Python实现短网址ShortUrl的Hash运算实例讲解

本文实例讲述了Python实现短网址ShortUrl的Hash运算方法。分享给大家供大家参考。具体如下&#xff1a;shorturl实现常见的做法都是将原始Url存储到数据库&#xff0c;由数据库返回一个对应ID。以下要实现的是不用数据库支持就对原始URL进行shorturl hash。说到这里我们很容易想…

xml json 比较_JSON和XML:它们如何比较?

xml json 比较JSON和XML&#xff1a;它们如何比较&#xff1f; JSON和XML是两种人类可读的文本格式&#xff0c;多年来已成为竞争对手。 XML的目的是通过可选使用模式来存储和定义文档和数据。 JSON几乎完全相反-序列化格式的要求非常简单&#xff0c;可以放在信用卡背面。 但是…

HashSet的学习

文章目录HashSet特点常用方法增删改查性能分析LinkedHashSetHashSet 特点 1.不允许存储重复的元素 2.只允许存储一个 null 3.没有索引值&#xff0c;所以不能使用普通的 for 循环遍历集合元素&#xff0c;也没有与索引值相关的方法 4.是一个无序的集合&#xff0c;存储元素和…

为什么引入TSS

【0】README text description from orange’s implemention of a os and for complete code ,please visit https://github.com/pacosonTang/Orange-s-OS/blob/master/p62.asm. 【1】 回忆——关于堆栈 通过调用门进行有特权级变换的转移——理论篇 &#xff08;1&#xff…

mysql 天数减1_mysql 日期操作 增减天数、时间转换、时间戳

MySQL datediff(date1,date2)&#xff1a;两个日期相减 date1 - date2&#xff0c;返回天数。select datediff(2008-08-08, 2008-08-01); -- 7select datediff(2008-08-01, 2008-08-08); -- -7一、MySQL 获得当前日期时间 函数1.1 获得当前日期时间(date time)函数&#xff1a…

jdk open jdk_JDK 14的迹象开始出现

jdk open jdkJDK 13当前处于Rampdown阶段1 &#xff08;RDP 1&#xff09;&#xff0c;计划在一周多一点的时间&#xff08;2019年7月18日&#xff09;进入Rampdown阶段2 &#xff08;RDP 2&#xff09;&#xff0c;并暂定于2019年9月17日正式上市。当然&#xff0c;这意味着是…

Java集合ArrayList的学习

文章目录特点常用的方法集合迭代器特点 1.集合只能存放对象&#xff0c;可以存储重复元素&#xff0c;不允许存储 null 2.集合存放的对象类型可以不一致 3.集合的长度可以改变&#xff0c;初始大小10&#xff0c;最大容量 Integer.MAX_VALUE - 8&#xff0c;满时扩容&#xff…

知识复习(LDT+TSS+GATE+INTERRUPT)

【1】README 1.0&#xff09;由于实现进程的切换任务&#xff0c;其功能涉及到 LDT TSS &#xff27;ATE INTERRUPT&#xff1b;下面我们对这些内容进行复习&#xff1b; 1.1&#xff09; source code from orange’s implemention of a os . 【2】知识复习&#xff08;LDTT…

arduinopn532模块_树莓派使用libnfc驱动ITEAD NFC PN532模块

libnfc是首个遵循GNU(自由工程项目)通用公共许可证针对所有人都完全免费的低级别NFC软件开发包和编程应用程序接口。它提供了完整的透明度且免费供大家使用。该库目前支持调制ISO / IEC14443 A和B&#xff0c;FeliCa&#xff0c;Jewel/Topaz标签及数据交换协议(P2P)作为目标和启…

jakarta ee_Jakarta EE的拟议命名空间

jakarta ee免责声明&#xff1a;这是我的个人观点&#xff0c;并不代表雇主的观点。 到目前为止&#xff0c;由于从Oracle迁移到Eclipse Foundation&#xff0c;每个人都知道我们需要将所有javax软件包名称重命名为其他名称。 &#xff08;供参考&#xff0c;请参阅附录A&…

类ResourceBundle详解

类 ResourceBundle 的核心作用就是用来加载指定的属性资源文件&#xff08;.properties 文件&#xff09;&#xff0c;其作用有点类似类 Properties。 public void test() {Locale locale new Locale("zh", "CN");// 根据指定的语言环境和基名加载资源文件…

Makefile浅尝

【0】README makefile定义&#xff1a; 一个工程中的源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的规则来指定&#xff0c;哪些文件需要一先编译&#xff0c;哪些文件需要后编译&#xff0c;哪些文件需要重新编译&a…

java类验证和装载顺序_Java类的加载顺序

1、有继承关系的加载顺序关于关键字static&#xff0c;大家 都知道它是静态的&#xff0c;相当于一个全局变量&#xff0c;也就是这个属性或者方法是可以通过类来访问&#xff0c;当class文件被加载进内存&#xff0c;开始初始化的时候&#xff0c;被static修饰的变量或者方法即…

java代码识别_识别Java中的代码气味

java代码识别作为软件开发人员&#xff0c;我们不仅要编写有效的代码&#xff0c;而且还要编写可维护的代码&#xff0c;这是我们的责任。 Martin Fowler在他的《重构&#xff1a;改进现有代码的设计》中将代码气味定义为&#xff1a; 通常对应于系统中更深层问题的表面指示 …

关于Java父子类继承的问题

1.子类无法继承父类的构造器 2.子类可以继承父类所有的变量和方法&#xff0c;父类私有的方法和变量也被继承到子类中&#xff0c;只是不可见而已&#xff0c;子类无法直接调用和访问。在子类对象中存储着父类中所有的变量的数据以及父类所有方法的引用地址。 3.被重写的父类方…

git连接到github(SSH无密码登陆)

【0】README 0.1&#xff09;本文旨在尝试在linux环境下免密码连接到github&#xff0c;并进行push pull projects in github by git commands。0.1&#xff09; 对ssh免密码登录有不熟悉的童鞋&#xff0c;please visit http://blog.csdn.net/pacosonswjtu/article/details/…

excel柱状图堆叠图显示总和_excel堆积柱形图显示百分比 在Excel堆积图中显示百分比标签的方法...

excel堆积柱形图显示百分比 在Excel堆积图中显示百分比标签的方法&#xff0c;前天刚学习了一个excel的新技术&#xff0c;叫“excel堆积柱形图显示百分比”授课老师对我们说&#xff0c;这一技术的专业全称为“excel堆积柱形图显示百分比 在Excel堆积图中显示百分比标签的方法…

java命令模式_Java中的命令设计模式

java命令模式在本教程中&#xff0c;我们将学习命令模式&#xff0c;这是一种重要的行为设计模式。 它具有一些重要的应用程序&#xff0c;例如在文本编辑器中实现撤消/重做功能。 在命令设计模式中&#xff0c;有一个命令对象位于发送方和接收方对象之间。 发送者对象可以创建…