当前位置: 首页 > 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

相关文章:

  • Qt QPaintEvent绘图事件painter使用指南
  • lcd-framebuffer驱动开发参考文章
  • 外卖霸王餐支持京东外卖点餐啦~
  • 零基础远程连接课题组Linux服务器,安装anaconda,配置python环境(换源),在服务器上运行python代码【1/3 适合小白,步骤详细!!!】
  • 高防CDN如何解决网站访问卡顿与崩溃问题?
  • 如何提高CAD作图设计效率,技术分享
  • Memory Repair (一)
  • 【报错解决方案】cannot open shared object file: No such file or directory
  • Unity3D仿星露谷物语开发54之退出菜单及创建可执行文件
  • 非标RFID电子标签工业载码体如何定制?
  • win11如何重启
  • OpenCV---findCountours
  • 11.13 LangGraph记忆机制解析:构建生产级AI Agent的关键技术
  • Linux的五种IO模型
  • 《软件工程》实战— 在线教育平台开发
  • 2.1 Maven项目架构管理工具
  • Pathway:重新定义实时数据处理的Python框架
  • PHP实战:安全实现文件上传功能教程
  • SQL进阶之旅 Day 5: 常用函数与表达式
  • K8s边缘集群赋能工业自动化:从传感器监控到智能决策的全流程升级
  • wap网站开发视频教程/销售的三个核心点
  • php 快速网站开发/seo外包品牌
  • 沧州网站建设定制价格/自己怎么优化我网站关键词
  • 网站的建设步骤有哪些/如何做谷歌seo推广
  • 企业网站的在线推广方法有哪些/网页制作软件
  • 广西网站建设软件推广/济南竞价托管公司