当前位置: 首页 > 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));//年世兰 = 华妃//甄嬛 = 菀嫔//乌拉那拉 = 皇后}
}

相关文章:

  • 第一章:HTML基石·现实的骨架
  • 基于单应性矩阵变换的图像拼接融合
  • WebGIS 开发黑科技:解锁地理信息的新视界
  • vscode点击函数名/变量/文件名无法跳转
  • 【deekseek】P2P通信路由过程
  • 内核深入学习3——分析ARM32和ARM64体系架构下的Linux内存区域示意图与页表的建立流程
  • AUTOSAR图解==>AUTOSAR_TPS_ECUResourceTemplate
  • MySQL 主从复制与读写分离
  • CST软件对OPERACST软件联合仿真汽车无线充电站对人体的影响
  • 【网络编程】七、详解HTTP 搭建HTTP服务器
  • 快速排序、归并排序、计数排序
  • 论文解读:Drivestudio——OmniRe: Omni Urban Scene Reconstruction
  • css3基于伸缩盒模型生成一个小案例
  • 鸿蒙接入flutter环境变量配置windows-命令行或者手动配置-到项目的创建-运行demo项目
  • MATLAB Simulink在Autosar和非Autosar工程下的开发流程
  • AI智能分析网关V4助力工厂/工地/车间/能源矿山场景玩手机行为精准检测与安全生产智能化监管
  • Python(1) 做一个随机数的游戏
  • LeetCode 648 单词替换题解
  • 第九届御网杯网络安全大赛初赛WP
  • [Java][Leetcode middle] 45. 跳跃游戏 II
  • 习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式
  • 美国三大指数全线高开:纳指涨逾4%,大型科技股、中概股大涨
  • 哈佛新论文揭示 Transformer 模型与人脑“同步纠结”全过程!AI也会犹豫、反悔?
  • 白玉兰奖征片综述丨综艺市场破局焕新,多元赛道重塑价值坐标
  • 水豚“豆包”出逃已40天,扬州茱萸湾景区追加悬赏
  • 从采购到销售!市场监管总局指导行业协会防控肉品风险