当前位置: 首页 > news >正文

Map集合(双列集合)

Map结合也称为“键值对集合”,格式:{key1=value1,key2=value2....}

Map集合的特点:

键唯一:在Map集合中,键(key)是唯一的,不能有重复的键。如果尝试插入一个已经存在的键,新的值会覆盖旧的值。

值可重复:与键不同,值(value)可以重复。键和值时一一对应的,每个键只能找到自己对应的值。

Map集合的常用方法:

Map是双列集合的祖宗,它的功能是全部双列集合都可以继承过来使用的。

常用实现类:

1.HashMap(由键决定特点):无序、不重复、无索引;

2.LInkedHashMap(由键决定特点):有序、不重复、无索引;

3.TreeMap(由键决定特点):按默认大小升序、不重复、无索引;

Map集合的遍历方式:

1.键找值:先获取Map集合全部的键,再通过遍历键来找值。

通过Set集合存储Map集合所有的键,然后再通过遍历Set集合提取值

2.键值对:把"键值对"看成一个整体进行遍历

Map提供的方法:Set<Map.Entry<K(类型),V(类型)> entrySet()> 获取所有键值对的集合(Map.Entry<K,V>是一个整体类型)

也就是这个方法将Map集合中的键值对包装成一个整体对象存到成Set集合,用getKey()和getValue()两个方法获取键值对。

3.Lambda表达式:jdk1.8开始之后的新技术(简单)

需要用到的方法:default void forEach(BiConsumer<? super K,? super V> action)结合lambda遍历Map集合。 

代码演示:

public class test1 {public static void main(String[] args) {Map<String,Integer> map = new HashMap<>();map.put("小王",18);map.put("小李",19);map.put("小张",20);map.put("小宋",19);map.put("小王",19);System.out.println(map);//System.out.println(map.get("小王"));Set<String> set = map.keySet();//1.键找值将map的键添加到set中,遍历setfor(String key:set){System.out.print(key+"="+map.get(key)+" ");}//2.键值对:Set<Map.Entry<String,Integer>> entrySet= map.entrySet();for(Map.Entry<String,Integer> entry:entrySet){System.out.print(entry.getKey()+"="+entry.getValue()+" ");}System.out.println();//3.Lambda表达式:map.forEach(new BiConsumer<String, Integer>() {@Overridepublic void accept(String s, Integer integer) {System.out.print(s+"="+integer);}});//简化后map.forEach((s,integer)-> System.out.print(s+"="+integer));}
}

Map常用集合的实现类

底层实现原理本质上和Set集合一样,实际上:原来学的Set系列集合的底层就是基于Map实现的,只是Set集合中的元素只要键数据,不要值数据而已

HashSet底层原理是HashMap

LinkedHashSet底层原理是LinkedHashMap

TreeSet底层原理是TreeMap

http://www.xdnf.cn/news/676369.html

相关文章:

  • 在PyTorch中,对于一个张量,如何快速为多个元素赋值相同的值
  • C语言栈详解
  • Git安装
  • 【Webtrees 手册】第 10章 - 用户体验
  • Mysql常用知识3:Kafka和数据库优化
  • 本地部署离线翻译(LibreTranslate)
  • 锂电电动扭剪扳手市场报告:现状、趋势与竞争格局深度解析
  • 关于老项目编译问题的处理
  • day022-定时任务-故障案例与发送邮件
  • 字节跳动推出开源多模态模型 BAGEL 从图像生成到世界建模
  • java上机测试错题回顾(2)
  • 万象生鲜配送系统 2025-05-23 更新日志
  • 使用新一代达梦管理工具SQLark,高效处理 JSON/XML 数据!
  • 多元一次不定方程
  • NGINX HTTP/2 全面指南开启、调优与实战
  • HTML常见事件详解:从入门到实战应用
  • OpenHarmony定制系统组合按键(一)
  • springBoot项目测试时浏览器返回406问题解决方案
  • iOS QQ抽屉式导航的实现
  • NIFI的性能调优
  • FilterAnalysis -滤波器分析
  • 用nz-tabel写一个合并表格
  • 利用机器学习优化数据中心能效
  • 深度学习实战109-智能医疗随访与健康管理系统:基于Qwen3(32B)、LangChain框架、MCP协议和RAG技术研发
  • 复杂度拆解
  • 程序环境与预处理
  • Cesium添加点、线、面
  • TF 卡 U1 和 U3 有什么区别?一文解析关键差异
  • SQL语句内容处理——给每行内容都添加单引号和逗号
  • 理解vue-cli 中进行构建优化