java的Map集合 详解Map集合

java的Map集合 详解Map集合java 集合 Map HashMap LinkedHashMa Hashtable 详解 Map 集合

一、Map集合的特点

Map集合的特点
1.Map是一个双列集合,一个元素包含两个值(一个key,一个value)

2.Map集合中的元素,key和value的数据类型可以相同,也可以不同

3.Map中的元素,key不允许重复,value可以重复

4.Map里的key和value是一一对应的。

二、Map中的方法:

1.public   V  put (K key,V value) 把指定的键和值添加到Map集合中,返回值是V

如果要存储的键值对,key不重复返回值V是null

如果要存储的键值对,key重复返回值V是被替换的value值 

java的Map集合 详解Map集合

2. public  V remove(Object key)把指定键所对应的键值对元素,在Map集合中删除,返回被删除的元素的值。 返回值:V 。如果key存在,返回被删除的值,如果key不存在,返回null

 java的Map集合 详解Map集合

3.public V remove (Object key):根据指定的键 在Map集合中获取对应的值

如果key存在,返回对应的value值,如果key不存在,返回null

 java的Map集合 详解Map集合

  4.boolean containsKey( Object key)判判断集合中是否包含指定的键

包含返回true,不包含返回falsejava的Map集合 详解Map集合

三、遍历Map集合的方式

1.通过键找值的方法;

使用了setKey方法,将Map集合中的key值,存储到Set集合,用迭代器或foreach循环遍历Set集合来获取Map集合的每一个key,并使用get(key)方法来获取value值

java的Map集合 详解Map集合

java的Map集合 详解Map集合

java的Map集合 详解Map集合

java的Map集合 详解Map集合 

 2.使用Entry对象遍历

Map.Entry

,在Map接口中有一个内部接口Entry(内部类)

作用:当集合一创建,就会在Map集合中创建一个Entry对象,用来记录键与值(键值对对象,键值的映射关系)java的Map集合 详解Map集合

 有了Entry对象就可以使用Map中的entrySet方法,把Map集合中的多个Entry对象存入一个Set集合来遍历Set集合,获取Set集合中每一个Entry对象,然后可以使用Entry中的两个方法getKey和getValue来分别获取键和值。

代码步骤:

java的Map集合 详解Map集合

 java的Map集合 详解Map集合

 java的Map集合 详解Map集合

 

四、Map的常用实现类

(一)、HashMap

【1】.特点:1.HashMap底是哈希表,查询速度非常快(jdk1.8之前是数组+单向链表,1.8之后是数组+单向链表/红黑树 ,链表长度超过8时,换成红黑树)

     2. HashMap是无序的集合,存储元素和取出元素的顺序有可能不一致

     3.集合是不同步的,也就是说是多线程的,速度快

【2】.HashMap存储自定义类型键值

HashMap存储自定义类型键值,Map集合保证key是唯一的:作为key的元素,必须重写hashCode方法和equals方法,以保证key唯一

java的Map集合 详解Map集合

java的Map集合 详解Map集合

 (二)LinkedHashMap

HashMap有子类LinkedHashMap:LinkedHashMap

extends HashMap 

是Map接口的哈希表和链表的实现,具有可预知的迭代顺序(有序)

底层原理:哈希表+链表(记录元素顺序)

特点:1.LinkedHashMap底层是哈希表+链表(保证迭代的顺序)

2.LinkedHashMap是一个有序的集合,存储元素和取出元素的顺序一致

改进之处就是:元素存储有序了

(三)Hashtable

Hashtable

implements Map

Hashtable:底层也是哈希表,是同步的,是一个单线程结合,是线程安全的集合,速度慢

HashMap:底层也是哈希表,但是线程不安全的集合,是多线程集合,速度快

HashMap(还有之前学的所有集合):都可以存储null键,null值

Hashtable:不能存储null键,null值

java的Map集合 详解Map集合

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228485.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午6:54
下一篇 2026年3月16日 下午6:55


相关推荐

  • ActivityManager的作用

    ActivityManager的作用ActivityMana 在操作系统中有重要的作用 本文利用操作系统源码 逐步理清 ActivityMana 的框架 并从静态类结构图和动态序列图两个角度分别进行剖析 从而帮助开发人员加强对系统框架及进程通信机制的理解 ActivityMana 的作用参照 SDK 的说明 可见 ActivityMana 的功能是与系统中所有运行着的 Activity 交互提供了接口 主要的接口围绕着运

    2026年3月19日
    2
  • arping 命令解析

    arping 命令解析一、介绍ARP协议是“AddressResolutionProtocol”(地址解析协议)的缩写。在同一以太网中,通过地址解析协议,源主机可以通过目的主机的IP地址获得目的主机的MAC地址。arping程序就是完成上述过程的程序。arping,用来向局域网内的其它主机发送ARP请求的指令,它可以用来测试局域网内的某个IP是否已被使用。 二、指令格式如下:arping[-AbDfhqUV][…

    2022年5月1日
    50
  • 一个好玩的小游戏(纯C语言编写)

    一个好玩的小游戏(纯C语言编写)最近在看知乎是发现了一个这一个专栏https://zhuanlan.zhihu.com/c2game从中获取的许多知识,本文中的游戏也是从里面学到的,不过本人又自己加了一些功能。这是一个类似于飞机大战的游戏,不过目前代码量比较小,所以看起来非常简陋游戏界面如下更新日志,本人将原来的原来的代码有进一步的优化了一下,之前是只有一个非常小的战机现在更新后可以产生一个非常大的战机(看起来也更

    2022年5月19日
    46
  • 冯骥评价Seedance 2.0:AI理解多模态信息并整合的能力完成了一次飞跃

    冯骥评价Seedance 2.0:AI理解多模态信息并整合的能力完成了一次飞跃

    2026年3月13日
    3
  • Google资深工程师深度讲解Go语言-单任务版爬虫(十四)「建议收藏」

    Google资深工程师深度讲解Go语言-单任务版爬虫(十四)

    2022年2月17日
    40
  • 汇编语言系列教程之基础入门 (一)「建议收藏」

    汇编语言系列教程之基础入门 (一)「建议收藏」机器字长机器字长是指CPU一次运算所能处理的数据的位数,一般来说这个数的和CPU的通用寄存器长度、数据总线的宽度等相等,在8086中为16bit。由于历史原因,x86系列的CPU生产较早,所以这一系

    2022年8月5日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号