Java集合之Map

【Java 集合】Map 集合底层原理 Map 集合底层原理 阅读详情


Map用法

Java 自带了各种 Map 类。这些 Map 类可归为三种类型:
  1. 通用Map,用于在应用程序中管理映射,通常在 java.util 程序包中实现 HashMap、Hashtable、Properties、LinkedHashMap、IdentityHashMap、TreeMap、WeakHashMap、ConcurrentHashMap
  2. 专用Map,通常我们不必亲自创建此类Map,而是通过某些其他类对其进行访问 java.util.jar.Attributes、javax.print.attribute.standard.PrinterStateReasons、java.security.Provider、java.awt.RenderingHints、javax.swing.UIDefaults
  3. 一个用于帮助我们实现自己的Map类的抽象类AbstractMap

HashMap 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非同步的。

TreeMap 能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。

Hashtable 与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。

LinkedHashMap 保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和value均允许为空,非同步的。

遍历输出Map中的数据:

1用for循环:

		HashMap<String, String> hashMap = new HashMap<>();
		hashMap.put("a", "1");
		hashMap.put("b", "2");
		hashMap.put("c", "3");
		//增强for循环进行迭代输出
		for(String key:hashMap.keySet()) {
			System.out.println(key+":"+hashMap.get(key));
		}
2用 entryset :

HashMap<String, String> hashMap = new HashMap<>();
		hashMap.put("a", "1");
		hashMap.put("b", "2");
		hashMap.put("c", "3");
		//用entrykey进行迭代
		for(Map.Entry entry:hashMap.entrySet()){
			String ss = (String) entry.getKey();
			String sss = (String) entry.getValue();
			System.out.println(ss+":"+sss);
		}
插入效率对比:

public class Test_Speed {
	static long start = System.currentTimeMillis();
	static long test(Map map) {
			for(int i=0;i<500000;i++) {
				map.put("a","1");
			}
			long end = System.currentTimeMillis()-start;
			return end;
		
	}
	public static void main(String[] args) {
			HashMap<String, String> hashMap = new HashMap<>();
			Hashtable<String, String> hashtable = new Hashtable<>();
			LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<>();
			TreeMap<String, String> treeMap = new TreeMap<>();
			System.out.println("hashMap时间消耗:"+test(hashMap));
			System.out.println("hashTable:时间消耗"+test(hashtable));
			System.out.println("linkedHashMap:时间消耗"+test(linkedHashMap));
			System.out.println("treeMap:时间消耗"+test(treeMap));

	}

}
输出:

hashMap时间消耗:20
hashTable:时间消耗68
linkedHashMap:时间消耗89
treeMap:时间消耗114





Map用法

Java 自带了各种 Map 类。这些 Map 类可归为三种类型:
  1. 通用Map,用于在应用程序中管理映射,通常在 java.util 程序包中实现 HashMap、Hashtable、Properties、LinkedHashMap、IdentityHashMap、TreeMap、WeakHashMap、ConcurrentHashMap
  2. 专用Map,通常我们不必亲自创建此类Map,而是通过某些其他类对其进行访问 java.util.jar.Attributes、javax.print.attribute.standard.PrinterStateReasons、java.security.Provider、java.awt.RenderingHints、javax.swing.UIDefaults
  3. 一个用于帮助我们实现自己的Map类的抽象类AbstractMap

HashMap 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非同步的。

TreeMap 能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。

Hashtable 与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。

LinkedHashMap 保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和value均允许为空,非同步的。

遍历输出Map中的数据:

1用for循环:

2用entryset:

插入效率对比:

Java基础:Map集合 Collection中的集合,元素是孤立存在的,向集合中存储元素采用一个个元素的方式存储。Map中的集合,元素是成对存在的。每个元素由键与值两部分组成,通过键可以找对所对应的值。Collection中的集合称为单列集合,Map中的集合称为双列集合。需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。HashMap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。 阅读详情

相关推荐

Android手机免root玩转Kali NetHunter:Termux保姆级安装指南(附Kex VNC配置)

本文提供了一份详细的Android手机免root安装Kali NetHunter的保姆级指南。通过使用Termux终端模拟器,用户无需解锁Bootloader或获取root权限,即可在普通安卓设备上部署完整的Kali Linux渗透测试环境。教程涵盖了从环境准备、NetHunter核心安装到配置Kex VNC实现图形桌面访问的全过程,并附带了电脑投屏与常见问题解决方案,旨在打造一个便携的移动安全学习与测试平台。

weixin_29208327的博客 304

java-map集合

1.从需求中我们可以看到,有三个省份,每一个省份有多个城市 我们可以用一个Map集合的键表示省份名称,而值表示省份有哪些城市。TreeMap集合的底层原理和TreeSet也是一样的,底层都是红黑树实现的。3.遍历80个学生选择景点的集合,得到每一个景点,判断Map集合中是否包含该景点 如果不包含,则存储"景点=1"1.首先可以将80个学生选择的景点放到一个集合中去(也就是说,集合中的元素是80个任意的ABCD元素)TreeMap集合的特点也是由键决定的,默认按照键的升序排列,键不重复,也是无索引的。

qq_69149404的博客 1131

【VS2017】“LNK1104 cannot open file ‘python39_d.lib‘ “

记录一下编译调用了python代码的C语言源程序时遇到的问题 版本:以python3.9.1为例 先确保你安装了python的debug版本,如果没有,用对应版本安装包可以修改已经安装的python,如图。 选择 “Modify” 选择next 确保最后一项勾选,然后install。 光安装了还不够,需要配置一下C语言编译器。 以VS2017为例: 将python37_d.lib(在安装目录下的libs文件夹里有python39_d.lib)所在文件夹的路径添加到库目录里面,右键你的解决方案,选.

m0_46296905的博客 6478

JAVA中的Map集合

map集合

2401_83377623的博客 1794

QQ的TEA填充算法C#实现 By Red_angelX

注:本人只是从LUMA QQ的 Source Code里面把相应Java语言翻译成C#,纯技术研究,并没有对TC产品做任何逆向分析,不承担任何法律责任!转载请保持本文完整性网上有c/c++,vb,delphi,java,perl各种版本的tea填充算法,唯独没有C#的,这让我这种狂热喜爱C#的人如何承受,于是,花3天时间看了各种代码经历无数失败的挫折终于用C#完成了该填充算法,废话不多说,直接

Red_angelX的专栏 1万+

产品包装质检实战:基于YOLOv5的智能包装合格检测系统全流程指南

摘要: 针对产品包装质检效率低、漏检率高的问题,本文提出基于YOLOv5的智能检测系统。系统通过采集包装缺陷数据(破损、缺标、封装不良等),利用YOLOv5实现多类别缺陷识别(准确率≥95%),并开发Flask Web界面实现检测可视化与报告生成。实验表明,该系统在30帧/秒的产线速度下可稳定运行,显著提升质检效率。项目涵盖数据标注、模型训练、系统开发全流程,具有工业落地价值,适用于智能制造场景的自动化质检需求。(149字)

LXY_LOVE36的博客 95

Java基础 Map集合

主要内容 Map集合 教学目标 能够说出Map集合特点 使用Map集合添加方法保存数据 使用”键找值”的方式遍历Map集合 使用”键值对”的方式遍历Map集合 能够使用HashMap存储自定义键值对的数据 能够使用HashMap编写斗地主洗牌发牌案例 第一章 Map集合 1.1概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的...

kai46385076的专栏 9043

RAG测评实战代码

本文主要介绍了RAG测评实战代码,希望对使用RAG的同学们有所帮助。 文章目录 1. 前言 2. 实战代码 2.1 实战代码一 2.2 实战代码二

herosunly的博客 1万+

Java-Map集合

现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即接口。我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。Map中的集合,元素是成对存在的(理解为夫妻)。

weixin_40968325的博客 1146

(持续更新中!)详解【计算机类&面试真题】军队文职考试 ——第一期(真题+解析)| TCP、UDP的区别;程序局部性;ICMP协议及主要功能;重定位所需的计算机硬件

在当今信息化时代,军队中对于计算机专业人才的需求与日俱增。因此,了解面试和复试中常见的问题和要求对于准备应聘者来说至关重要。本文将围绕面试的准备要点、常见问题以及面试技巧进行探讨,并提供一些建议和经验。通过了解面试和复试的准备要点、常见问题以及技巧,读者将能够提升应对能力和成功率。本文为准备军队文职面试和计划考研复试的读者提供了有价值的参考和指导。通过阅读本篇博客,读者将能够获得关于军队文职计算机类面试和计算机考研复试的全面了解,提升自身的应对能力和成功率。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 1690

yolov26改进 | 融合改进篇 | 轻量级移动端网络ShuffleNetV2融合CCFM参数量仅百万(附代码+修改教程)

本文介绍ShuffleNetV2与跨尺度特征融合模块CCFM融合改进的YOLOv26。ShuffleNetV2以硬件效率为导向,通过通道分割、轻量卷积和Channel Shuffle减少冗余计算与内存访问,在降低参数量和GFLOPs的同时保持高效特征提取;CCFM进一步加强不同尺度特征交互,弥补轻量主干语义表达不足的问题。本人在轻量模型上测试后,参数量和计算量明显下降,检测精度有一定提升,适合移动端、边缘设备及实时检测任务。文中提供完整代码、配置文件、模块注册及Codex修改思路,方便复现、对比和二次创新。

Snu77的博客 203

Java集合之Map集合详解

Map,HashMap集合,Map遍历,LinkedHashMap,集合中的基本方法,Map集合详解

m0_62729850的博客 2461

倍福--RS232自由口实现

RS232/485通信协议是在现场中常用到的,比如触摸屏、温控模块等设备控控制器做通信,会常用到此类协议,本文介绍RS232/485自由口通信的实现,并用PC调试助手进行测试。 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制器软件 3 硬件连接 3 2.1. PC COM介绍 3 2.2. RS232/RS485连接 3 3.2.1. N030…………. 4 3.2.2. N031…………. 4 2.3. 实际线路连接 5 PLC程序 7 3

weixin_41883890的博客 3284

【Java集合】双列集合Map详解

集合框架体系图如下:本文是对集合框架中的双列集合——Map集合的一个深度总结。主要内容包括了Map集合的介绍、特点、常用方法演示、遍历方式,以及Map接口的几个常用实现类——的源码分析①Map接口与Collection接口并列存在,与Collection系列的单列集合相对,Map是双列集合,用于保存具有映射关系的数据Key-Value(键值对)②Map接口位于下,其接口定义、继承关系图如下:可以看到,Map接口常用的实现类有3个——,并且还有两个常用实现类。

m0_55908255的博客 892

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

java之Map集合总结

Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。 Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。 Collection中的集合称为单列集合,Map中的集合称为双列集合。 需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。 1 Map常用子类 Map常用子类有: HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保.

xiaoyong5854的博客 3052

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java集合 — — Map集合

十、Map集合 10.1、概述 现实生活中,常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一对应的关系,就叫做映射。Java提供了专门的集台类用来存放这种对象关系的对象,即java.util.Map接口。 接口Map<K, V> 类型参数: K - 此映射所维护的键的类型 V - 映射值的类型 将键映射到值的对象,一个映射不能包含重复的键:每个键最多只能映时到一个值。 Map接口下的集合与collection接口下的集合的对比: ● Collecti

mocoll的博客 1756

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JAVA集合之Map集合

除Collection集合外,JAVA还有另一大体系集合,Map集合,相较于Collection集合,Map集合存储元素方式不同,该集合具有key(键)-value(值)映射关系,存储的元素是成对存在的对象,而key值不允许重复。 Map与Collection相同,都是接口,而相较于Collection没有那么多的分类,Map集合主要包含3个实现类HashMap、Hashtable以及TreeSe...

Fjtd_2019的博客 1019

Java Map集合、集合的嵌套

Java Map集合、集合的嵌套

zeijiershuai的博客 1163

java Map集合嵌套,value为Map和value为List

java Map集合嵌套,value为Map和value为List 2013年12月13日 23:13:34wuer0520阅读数:12476 import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List...

evilcry2012的专栏 6548

Java集合 —— Map集合

具体实现我在之前的博客写过了集合List和Map——重写equals和hashCode方法(集合元素是类的对象)这里举一个简单的例子return age;@Override@Override做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。

2401_84097941的博客 1093

java 定义map集合_java基础-Map集合

java基础-Map集合作者:尹正杰版权声明:原创作品,谢绝转载!否则将追究法律责任。一.Map集合概述我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下:1>.Collection中的集合,元素是孤立存在的,向集合中存储元素采用一个个元素的方式存储;2>.Map中的集合,元素是成对存在的,每个元素是成对存在的,每个元素由...

weixin_36331312的博客 2915

java集合之map

map基本概念 Map:元素是按照键值对形式存储的。每一对元素由两部分组成。分别叫键和值 键是唯一的,值是可以重复的。 所以Map集合的底层数据结构是针对键有效,跟值无关。 map相关面试题 Map接口和Collection接口的不同?(面试题) A:Map集合是双列集合;Map集合的键是唯一的,值是可以重复的。其实我们也可以简单的理解为Map集合的键和值是由Set和L...

aovlvwj868367100的博客 167

【Java集合类】之Map集合的特点及使用

java.util接口 MapK - 此映射所维护的键的类型V - 映射值的类型将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。...

鱼干的博客 975

java中的Map集合

java中的Map集合 什么是Map集合? Map用于保存具有映射关系的数据,Map集合里保存着两组值,一组用于保存Map的ley,另一组保存着Map的value。 map集合的作用 和查字典类似,通过key找到对应的value,通过页数找到对应的信息。用学生类来说,key相当于学号,value对应name,age,sex等信息。用这种对应关系方便查找。 Map和Set的关系 可以说关系是很密切...

weixin_43381234的博客 340

Java Map集合

1、概述: Map用于保存具有映射关系的数据,Map集合里保存着两组值,一组用于保存Map的ley,另一组保存着Map的value。 2、Map集合特点: ​ 1.Map集合是一个双列集合,一个元素包含兩个値(一 个key,一个value) ​ 2.Map集合中的元素, key和value的数据类型可以相同,也可以不同 ​ 3.Map集合中的元素, key是不允午重复的, value是可以重复的 ​ 4.Map集合中的元素, ke

m0_52204142的博客 860
上一篇: Java集合之Set
下一篇: Java的四种内部类
Coder_py
博客等级 码龄10年 106粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值