java的Map集合 详解Map集合_java map-程序员宅基地

技术标签: java  

一、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值 

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

 

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

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

 

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

包含返回true,不包含返回false

三、遍历Map集合的方式

1.通过键找值的方法;

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

 

 2.使用Entry对象遍历

Map.Entry<K,V>,在Map接口中有一个内部接口Entry(内部类)

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

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

代码步骤:

 

 

 

四、Map的常用实现类

(一)、HashMap

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

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

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

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

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

 (二)LinkedHashMap

HashMap有子类LinkedHashMap:LinkedHashMap <K,V> extends HashMap <K,V>

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

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

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

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

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

(三)Hashtable

Hashtable<K,V> implements Map<K,V>

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

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

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

Hashtable:不能存储null键,null值

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46140377/article/details/124032488

智能推荐

人大金仓数据库KingbaseES dbms_xmlquery包使用技巧--集合元素处理方式_数据库中的xml数据怎么改-程序员宅基地

文章浏览阅读842次,点赞22次,收藏19次。在目前的KingbaseES的使用过程中,我们会遇到数据库需要存储XML格式的数据,或者需要对查询的数据进行转换的问题,XML格式的数据类似于HTML格式数据,XML是一种扩展标记语言,最早于1998年被引入软件工业界,它不仅可以在WEB前端使用还可以应用于后端数据处理以及数据库存储等。_数据库中的xml数据怎么改

rtc-sfu_rtc sfu-程序员宅基地

文章浏览阅读581次。SFU 的全称是:Selective Forwarding Unit,是一种通过服务器来路由和转发 WebRTC 客户端音视频数据流的方法。如图所示,SFU 服务器最核心的特点是把自己 “伪装” 成了一个 WebRTC 的 Peer 客户端,WebRTC 的其他客户端其实并不知道自己通过 P2P 连接过去的是一台真实的客户端还是一台服务器,我们通常把这种连接称之为 P2S,即:Peer to Server。_rtc sfu

粒子群算法matlab代码(注释很详细哦,图像也美美哒,任意维度)_多种群并行粒子群算法matlab-程序员宅基地

文章浏览阅读4w次,点赞564次,收藏1.1k次。整个程序分为5个脚本pso1_mian.m:主程序,在此脚本内设置参数。pso1_im.m:画出函数图像(仅1维和2维)pso1_in.m:初始化pso1_in2.m:迭代寻优并输出结果另外还有一个目标函数,单独为一个脚本。推荐的测试函数—>这里先上运行结果图下面是源码1.pso1_mian.m这里的目标函数用函数句柄的形式调用(第15行)%% 粒子群算法%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% pso1_im_多种群并行粒子群算法matlab

使用 Python 的铅笔素描图像-程序员宅基地

文章浏览阅读1k次。图片在 Python 中表示为一组数字。所以我们可以进行各种矩阵操作来得到令人兴奋的结果。在本教程中,将向你展示如何只用几行代码创建“铅笔”草图图像。这个过程非常简单:灰度图像反转颜色模糊倒置图像将减淡混合应用于模糊和灰度图像我们可以为此选择任何我们想要的图像。将演示如何创建可以应用于任何图像、视频或实时流的对象。导入库OpenCV 和 Numpy 是项目所需的唯一库。我们使用以下两行代码导入它们..._mac怎样用python画素描版本的图

php laravel实战项目,Laravel框架应用:7个实战项目-程序员宅基地

文章浏览阅读1.4k次。很多PHP开发者在进行项目开发的时候,第一时间就会想到Laravel,如果你也正想学习这个优雅简洁的Laravel框架,不妨可以从以下8个教程入手,从基础到实战项目都包含了。Laravel框架简介:Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来,帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。..._laravel项目实例

consider using the '--user' option or check the permissions错误_consider using the `--user` option or check the pe-程序员宅基地

文章浏览阅读4.9w次,点赞23次,收藏37次。 win7下使用pip install numpy出现错误consider using the '--user' option or check the permissions纠正方法:pip install --user numpy参考链接:https://github.com/googlesamples/assistant-sdk-python/issues/244 ..._consider using the `--user` option or check the permissions.

随便推点

敏感目录收集工具_cracer安全工具包密码-程序员宅基地

文章浏览阅读759次。敏感目录收集mysql管理接口后台目录上传目录phpinforobots.txt---->列出防爬行目录安装包安装页面---->index.php爬行Cracer渗透工具包6.0下载链接:https://pan.baidu.com/s/1ac-t-EMrl89aGJMm3pYS5w 密码:a8f11.御剑后台目录扫描    御剑是一款好用的网站后台扫描工具,图..._cracer安全工具包密码

2021-05-21 仓库温控系统(Winform) 05 获取类属性静态方法PropertyHelper_properties = properties.where(p => listcols.contai-程序员宅基地

文章浏览阅读7.1w次。public class PropertyHelper{ /// <summary> /// 返回指定类型的指定列名的属性数组 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="cols"></param> /// <returns></returns> public _properties = properties.where(p => listcols.contains(p.getcolname().tolower(

移动开发技术:APP门户页面设计与开发_移动门户系统设计-程序员宅基地

文章浏览阅读145次。Fragment:Fragment是一种可以嵌入在Activity当中的UI片段,用来组建Activity界面的局部模块, 也可以说一个Actiivty界面可以由多个Fragment组成,其行为与Activity很相似,,有自己对应的布局(包含具体的View),,它有自己的生命周期,接收自己的输入事件,并且可以从运行中的activity中添加或移除。用imageview设计导入图片的格式,其中用 android:src="@drawable/bottom_4"导入需要用到的图片。_移动门户系统设计

Integer.MAX_VALUE_int max = integer.max_value;-程序员宅基地

文章浏览阅读252次。Integer.MAX_VALUE表示int的最大值int max=Integer.MAX_VALUE;//2147483647Integer.MIN_VALUE表示int的最小值int min=Integer.MIN_VALUE;//-2147483648_int max = integer.max_value;

JavaWeb项目:航班信息管理系统(tomcat+jsp)_javaweb航空管理系统-程序员宅基地

文章浏览阅读975次,点赞15次,收藏23次。该项目着重学生的实际应用场景来设计,模拟 机场中的航班系统的业务实现以及扩展,能够实现航班信息管理的的所有功能,包括航班信息,航 班目的地查询等功能的实现;用户输入用户名,真实姓名,密码进行注册,注册验证通过后,将用户存储到数据库中,如果数据库中已有相同用户名,则需要重新注册。:对管理员输入的用户名,密码进行验证,验证通过后,管理员可以使用航班信息管 理系统中所有权限的功能,否则重新登录该系统。:管理员登录成功,可以删除航班信息,删除完毕以后跳转到主页面显示所 以航班信息。_javaweb航空管理系统

Hutool基本用法介绍-程序员宅基地

文章浏览阅读1.5k次。在使用过程中,可以查阅 Hutool 的官方文档或者源码,以便更好地了解每个工具的具体用法和参数。它提供了丰富的工具类和方法,涵盖了字符串处理、日期时间操作、网络请求、文件操作、加解密、数据校验、反射操作等领域。你可以根据自己的项目需求选择适合的工具,来简化你的 Java 开发过程。发起 HTTP 请求(GET、POST、PUT、DELETE 等),支持设置请求头、请求参数、响应处理等。提供文件复制、移动、删除、读取、写入等操作,还支持递归遍历文件夹。支持 XML 数据的解析、生成和操作。_hutool