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

Java—— 双列集合 Map

双列集合体系结构

 

双列集合的特点

1.双列集合一次需要存一对数据,分别为键和值
2.键不能重复,值可以重复
3. 键和值是一一对应的,每一个键只能找到自己对应的值
4. 键+值这个整体我们称之为“键值对”或者“键值对对象”,在Java中叫做“Entry对象”

Map的常见API

Map是双列集合的顶层接口,它的功能是全部双列集合都可以继承使用的

方法名称说明
V put(K key,V value)添加元素,键相同时会覆盖值
V remove(0bject key)根据键删除键值对元素,返回值
void clear()移除所有的键值对元素
boolean containsKey(0bject key)判断集合是否包含指定的键
boolean containsValue(Objectvalue)判断集合是否包含指定的值
boolean isEmpty()判断集合是否为空
int size()

集合的长度,

也就是集合中键值对的个数 

代码演示 

import java.util.HashMap;
import java.util.Map;public class Test1 {public static void main(String[] args) {//创建集合,有两个泛型,一个是键的,一个是值的Map<String, String> m = new HashMap<>();//添加元素m.put("甄嬛", "菀嫔");m.put("乌拉那拉", "皇后");m.put("年世兰", "华妃");System.out.println(m);//{年世兰=华妃, 甄嬛=菀嫔, 乌拉那拉=皇后}//键相同时会覆盖值,并返回被覆盖的值System.out.println(m.put("甄嬛", "熹妃"));//菀嫔System.out.println(m);//{年世兰=华妃, 甄嬛=熹妃, 乌拉那拉=皇后}//根据键删除键值对元素,返回值System.out.println(m.remove("乌拉那拉"));//皇后//判断集合是否包含指定的键System.out.println(m.containsKey("乌拉那拉"));//falseSystem.out.println(m.containsKey("甄嬛"));//true//判断集合是否包含指定的值System.out.println(m.containsValue("皇后"));//falseSystem.out.println(m.containsValue("熹妃"));//true//集合的长度System.out.println(m.size());//2//移除所有的键值对元素m.clear();//判断集合是否为空System.out.println(m.isEmpty());//true}
}

Map的遍历方式

键找值

先用keySet方法获取所有的键,再遍历键,用键找值

import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class Test2 {public static void main(String[] args) {Map<String, String> m = new HashMap<>();m.put("甄嬛", "菀嫔");m.put("乌拉那拉", "皇后");m.put("年世兰", "华妃");//获取所有键Set<String> keys = m.keySet();//通过键找值for (String key : keys) {String value = m.get(key);System.out.println(key +" = "+ value);}//年世兰 = 华妃//甄嬛 = 菀嫔//乌拉那拉 = 皇后}
}

键值对

先通过entrySet方法获取键值对对象,再通过getKey和getValue方法分别获取键和值

import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class Test3 {public static void main(String[] args) {Map<String, String> m = new HashMap<>();m.put("甄嬛", "菀嫔");m.put("乌拉那拉", "皇后");m.put("年世兰", "华妃");//获取所有键值对,该集合存入的数据是键值对对象,泛型是Entry,//而键值对对象里的第一个元素是String类型,第二个元素也是String类型//所以有如下泛型的嵌套Set<Map.Entry<String, String>> entries = m.entrySet();//遍历获取键和值for (Map.Entry<String, String> entry : entries) {String key = entry.getKey();String value = entry.getValue();System.out.println(key + " = " + value);}//年世兰 = 华妃//甄嬛 = 菀嫔//乌拉那拉 = 皇后}
}

Lambda表达式

方法名称说明
default void forEach(BiConsumer ...)结合lambda遍历
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;public class Test4 {public static void main(String[] args) {Map<String, String> m = new HashMap<>();m.put("甄嬛", "菀嫔");m.put("乌拉那拉", "皇后");m.put("年世兰", "华妃");m.forEach(new BiConsumer<String, String>() {@Overridepublic void accept(String key, String value) {//第一个形参代表键,第二个形参代表值System.out.println(key + " = " + value);}});//年世兰 = 华妃//甄嬛 = 菀嫔//乌拉那拉 = 皇后//Lambda表达式m.forEach((key, value) -> System.out.println(key + " = " + value));//年世兰 = 华妃//甄嬛 = 菀嫔//乌拉那拉 = 皇后}
}
http://www.xdnf.cn/news/425323.html

相关文章:

  • Logisim实验--华科计算机组成原理(保姆级教程) 头歌-存储系统设计实验(汉字库存储芯片扩展实验、MIPS寄存器文件设计)
  • 【Unity】协程的同步使用
  • 第六天 车载应用开发
  • 【速通RAG实战:进阶】10.RAG 进化论:Advanced与Modular架构解锁智能问答新维度
  • 激光雷达定位算法在FPGA中的实现——section3 Matlab实现和校验
  • HarmonyOS 【诗韵悠然】AI古诗词赏析APP开发实战从零到一系列(一、开篇,项目介绍)
  • 【LeetCode 热题 100】二叉树的最大深度 / 翻转二叉树 / 二叉树的直径 / 验证二叉搜索树
  • React vs Vue:点击外部事件处理的对比与实现
  • 用vite脚手架建立 前端工程
  • 服务器制造业中,L2、L6、L10等表示什么意思
  • Shell脚本实践(修改文件,修改配置文件,执行jar包)
  • 互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-4
  • R²AIN SUITE 如何破解制造业效率难题,制造业效率提升新思路​
  • 配置Hadoop集群-上传文件
  • python_竞态条件
  • Gemini 2.5 推动视频理解进入新时代
  • 多模态大语言模型arxiv论文略读(七十三)
  • 二维差分(主要看原数组与差分数组的关系)
  • python: union()函数用法
  • 解决 MinIO 对象存储“AccessDenied”问题及 Docker 操作全解析
  • 《Docker 入门与进阶:架构剖析、隔离原理及安装实操》
  • 【认知思维】沉没成本谬误:为何难以放弃已投入的资源
  • jenkins流水线常规配置教程!
  • libMemcached 库下载记录
  • SQL 中 INSTR 函数简介及 截取地址应用
  • 【python】—conda新建python3.11的环境报错
  • 第五十七篇 Java接口设计之道:从咖啡机到智能家居的编程哲学
  • 本地部署ollama及deepseek(linux版)
  • ssl 中 key 和pem 和crt是什么关系
  • 配置 Spark 以 YARN 模式