JAVA双列集合Map的特点

news2024/12/26 12:06:41

一次存一对元素,分别是 键 和 值,他们是一 一对应的:
image.png
其中:
键不可以重复,值可以重复
这一对数据叫键值对、键值对对象、或 Entry


Map 的体系结构:

image.png
Snipaste_2024-01-29_10-13-11.png


Map的常见API:

image.png

方式的实现:
注意 Map 接口的泛型有两个参数,一个是键,一个是值Snipaste_2024-01-29_08-26-36.png

//创建对象
Map<String,String>map=new HashMap<>();


//put:1.添加元素
map.put("喜羊羊","灰太狼");
map.put("熊大","熊二");

/* //put:2.覆盖元素
        String result = map.put("喜羊羊", "美羊羊");
        System.out.println(result);//灰太狼    (返回被覆盖的值)*/

/*//remove根据键删除键值对 对象
        map.remove("喜羊羊");*/

/* //clear
        map.clear();*/

/* //containKey
        System.out.println(map.containsKey("喜羊羊"));

        //containsValue
        System.out.println(map.containsValue("熊二"));*/

/*   //is Empty
        System.out.println(map.isEmpty());*/

//size键值对个数
System.out.println(map.size());

//get
System.out.println(map.get("喜羊羊"));
//打集合
System.out.println(map);

要注意的就是 put 方法有两个作用:

  • 当添加的键不存在时,会直接添加该键值对,方法返回 null
  • 当添加的键存在时,会覆盖原有的键值对,并把被覆盖的值返回

Map 的遍历方式:

键找值(KeySet 方法+之前的遍历方法)

image.png

演示:

//创建集合
Map<String,String> map =new HashMap<>();
//添加键值对
map.put("喜羊羊","灰太狼");
map.put("熊大","熊二");
map.put("刘备","孙尚香");
//将键添加进set集合
Set<String> keys = map.keySet();
//遍历键---增强for
for(String key:keys){
    System.out.println(key+" "+map.get(key))
}
//或者迭代器:
Iterator<String> it = keys.iterator();
while(it.hasNext()){
    String str=it.next();//因为next要多次使用,最好交给一个变量
    System.out.println(str+" "+map.get(str));
}
//或者lambda
keys.forEach(s-> System.out.println(s+" "+map.get(s)));

熊大 熊二
刘备 孙尚香
喜羊羊 灰太狼


键值对(entrySet+之前的遍历方法)

Snipaste_2024-01-29_09-49-44.png
要知道 Entry 接口内,直接有 getKey 和 getValue 方法,遍历很方便

//创建集合
Map<String, String> m = new HashMap<>();
//添加键值对
m.put("喜羊羊", "灰太狼");
m.put("熊大", "熊二");
m.put("刘备", "孙尚香");
//将键值对放入Set集合,这个集合实现了Map.Entry接口
Set<Map.Entry<String, String>> entries = m.entrySet();

//增强for
for (Map.Entry<String, String> entry : entries) {
    System.out.println(entry.getKey() + " " + entry.getValue());

}

//迭代器
Iterator<Map.Entry<String, String>> it = entries.iterator();
while (it.hasNext()) {
    Map.Entry<String, String> e = it.next();
    System.out.println(e.getKey() + " " + e.getValue());
}

//lambda表达式
entries.forEach( e-> System.out.println(e.getKey() + " " + e.getValue()));

熊大 熊二
刘备 孙尚香
喜羊羊 灰太狼


Lambda 表达式:

在 forEach 的基础上使用 Lambda 表达式
Snipaste_2024-01-29_09-54-47.png

//创建集合
Map<String, String> m = new HashMap<>();
//添加键值对
m.put("喜羊羊", "灰太狼");
m.put("熊大", "熊二");
m.put("刘备", "孙尚香");


//普通forEach
m.forEach(new BiConsumer<String, String>() {
    @Override
    public void accept(String Key, String Value) {
        System.out.println(Key + " " + Value);
    }
});

//使用lambda表达式改进
m.forEach((String Key, String Value) -> System.out.println(Key + " " + Value));

熊大 熊二
刘备 孙尚香
喜羊羊 灰太狼

forEach 底层:

//for Each其实就是利用第二种方式进行遍历,依次得到每一个键和值
//再调用accept方法
Snipaste_2024-01-29_10-09-57.pngSnipaste_2024-01-29_10-10-13.png


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1420430.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UDP通信以及本地套接字

1. UDP 1.1 UDP 通信&#xff1a; UDP服务端创建出来的套接字不是监听套接字&#xff0c;直接就是通信套接字。 #include <sys/types.h> #include <sys/socket.h> ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *de…

网络原理-TCP/IP(1)

应用层 我们之前编写完了基本的java socket, 要知道,我们之前所写的所有代码都在应用层中,都是为了完成某项业务,如翻译等.关于应用层,后面会有专门的讲解,在此处先讲一下基础知识. 应用层对应着应用程序,是程序员打交道最多的一层,调用系统提供的网络api写出的代码都是应用层…

正式阶段高等数学复习之不定积分

不定积分这部分是为后面的定积分做准备的&#xff0c;整体上的框架可以分为2&#xff08;定义&#xff09;3&#xff08;计算方式&#xff09;3&#xff08;能积出来的三个函数&#xff09; 1、不定积分的概念&#xff1a;求某一个函数的不定积分就是求这个函数的原函数&#…

DIY_SmartWatch_S3

​​​​​ 简介&#xff1a;成熟的智能手表方案DIY&#xff1b;采用乐鑫ESP32-S3&#xff0c;支持蓝牙和WIFI。240x280彩色LCD触摸屏&#xff1b;内置9D运动睡眠传感器&#xff0c;支持SPI接口扩展在线心率&#xff0c;血氧等健康传感模组&#xff1b;支持USB TypeC&#xff…

第4章 数据表示与特征工程

目录 1. 分类变量1.1 One-Hot编码&#xff08;虚拟变量&#xff09;检查字符串编码的分类数据 1.2 数字可以编码分类变量 2. 分箱、离散化、线性模型与树3. 交互特征与多相似特征4. 单变量非线性变换总结&#xff08;2~4&#xff09;5. 自动化特征选择5.1 单变量统计5.2 基于模…

[GN] 设计模式—— 创建型模式

文章目录 创建型模式单例模式 -- 确保对象唯一性例子优化饿汉式懒汉式 优缺点使用场景 简单工厂模式例子&#xff1a;优化优缺点适用场景 工厂方法模式 -- 多态工厂的实现例子优缺点优化适用场景 抽象工厂模式 -- 产品族的创建例子优缺点适用场景 总结 创建型模式 单例模式 –…

2024年新提出的算法:(凤头豪猪优化器)冠豪猪优化算法Crested Porcupine Optimizer(附Matlab代码)

本次介绍一种新的自然启发式元启发式算法——凤头豪猪优化器(Crested Porcupine Optimizer&#xff0c;CPO)。该成果于2024年1月发表在中科院1区SCI top期刊Knowledge-Based Systems&#xff08;IF 8.8&#xff09;上。 1、简介 受到凤头豪猪&#xff08;CP&#xff09;各种…

驼背的危害,远比您能想到的还要多!

现在的年轻人才20多岁的年纪&#xff0c;就拥有了80多岁的腰椎。 不同于老年人由于骨质疏松而引发的驼背&#xff0c;年轻人驼背大部分是因为工作或学习中长期不正常坐姿导致&#xff0c;也称姿势性驼背。 我们日常工作的时候&#xff0c;习惯性的肩膀前倾去工作&#xff0c;导…

【amis低代码前端框架】vue2集成百度低代码前端框架amis

什么是amis&#xff1a;amis 是一个低代码前端框架&#xff0c;它使用 JSON 配置来生成页面&#xff0c;可以减少页面开发工作量&#xff0c;极大提升效率。 第一步&#xff1a;下载amis 命令行内执行以下命令下载安装amis npm i amis第二步&#xff1a;下载完毕amis后 将nod…

[React源码解析] Fiber (二)

在React15及以前, Reconciler采用递归的方式创建虚拟Dom, 但是递归过程不可以中断, 如果组件的层级比较深的话, 递归会占用线程很多时间, 那么会造成卡顿。 为了解决这个问题, React16将递归的无法中断的更新重构为异步的可中断更新, Fiber架构诞生。 文章目录 1.Fiber的结构2…

在Windows11的WSL上运行Llama2-7b-chat 下

上一篇博客讲了我跑Llama的demo的心路历程&#xff08;上一篇博客传送门&#xff09;&#xff0c;这篇我们主要是讲下怎么配置。 快速开始 使用Linux、Linux、Linux&#xff0c;重要的事情说三遍&#xff0c;如果你和我一样懒得安装双系统&#xff0c;那么在Windows下安装一个…

java组装复杂的map结构

如下图数据库查出来的记录要组装成如下图所示的map结构。 直接上代码 package com.rt.test.other;import org.apache.commons.lang.StringUtils;import java.util.*;public class TestMap {public static void main(String[] args) {Map<String,String> mapnew LinkedHa…

vue 使用 v-viewer 用于图片浏览的Vue组件,支持旋转、缩放、翻转等操作,基于viewer.js。

作者连接 npm&#xff1a; npm install v-viewerlegacy viewerjs main.js 引入&#xff1a; // 引入Viewer插件 import VueViewer, { directive as viewerDirective } from v-viewer; // 引入Viewer插件的图片预览器的样式 import viewerjs/dist/viewer.css; // 使用Viewer图片…

深入Pyecharts:桑基图绘制与炫酷效果实战【第38篇—python:桑基图】

文章目录 深入Pyecharts&#xff1a;桑基图绘制与炫酷效果实战桑基图简介安装 Pyecharts简单桑基图的绘制自定义桑基图的炫酷效果高级样式定制 多组数据桑基图的展示动态桑基图的绘制结合真实数据的桑基图案例导出和分享进阶应用&#xff1a;桑基图与其他图表的组合总结 深入Py…

【Java】创建一个SpringBoot项目

软件版本&#xff1a;IDE专业版 一、创建 创建项目时&#xff0c;要注意的有下面几点 1、 为了使用JDK1.8&#xff0c;我们在创建时用阿里云国服&#xff0c;将Server URL &#xff1a; https://start.spring.io/ 或者http://start.springboot.io/更改为&#xff1a;https:/…

Linux-正则表达式

1.正则表达式的定义&#xff1a; 正则表达式通常用于判断语句中&#xff0c;使用字符串描述、匹配一系列符合某个规则的字符串。 正则表达式是由普通字符与元字符组成。 普通字符包括小写字母、数字、标点符号及一些其他符号。元字符是指在正则表达式中具有特殊意义的专用字符&…

redis 极简分布式锁实现

写在前面 工作中遇到&#xff0c;整理 reids 做简单分布式锁的思考博文适合刚接触 redis 的小伙伴理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所有其它的路都是…

二百二十一、HiveSQL报错:return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

一、目的 在运行HiveSQL时&#xff0c;执行报错 tatement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 二、在yarn上查看任务报错 The required MAP capability is more than the supported max container capability in t…

springboot3+vue支付宝在线支付案例-解决跨域请求的问题

springboot3vue支付宝在线支付案例-解决跨域请求的问题&#xff01;为了使用外网地址&#xff0c;跨域请求业务接口。我们需要设置一个类。配置一下。 我们采用的方案是。借助于 WebMvcConfigurer package com.example.demo.config;import org.springframework.context.annot…

MySQL前百分之N问题--percent_rank()函数

PERCENT_RANK()函数 PERCENT_RANK()函数用于将每行按照(rank - 1) / (rows - 1)进行计算,用以求MySQL中前百分之N问题。其中&#xff0c;rank为RANK()函数产生的序号&#xff0c;rows为当前窗口的记录总行数 PERCENT_RANK()函数返回介于 0 和 1 之间的小数值 selectstudent_…