Scala中的Map 集合详解

news/2024/4/20 22:13:29/文章来源:https://blog.csdn.net/m0_51697147/article/details/130263313

目录

一、不可变长Map集合

1.map的声明与遍历

2.map的常用方法:get、getOrElse、keys、values、++、++:

二、可变长Map集合

三、Map的其他方法


key -> value 的语法形式实际上是用库中的隐式转换实现的,实际调用了 Map.apply 方法。Map.apply 方法的参数为一个两元素的元组(键值对)。

map 的参数是一个函数,以下示例展示了定义这个函数的两种方法。每个键值对(元组)都将被传入到该函数中。我们可以将其参数定义为一个两元素的元组。

一、不可变长Map集合

1.map的声明与遍历

map定义:其中当出现同一个key值的时候,后面的值会将前面的值进行覆盖。

 //一、不可变长的Map集合//map传入key、value的形式有两种:1,key->value  2,(key,value)val map = Map[String,Int]("a"->100,"b"->200,("c",300),("d",400))//三种遍历map集合的方式,但返回的结果不同,for跟foreach结果一样println(map)map.foreach(print)for (elem <- map) {print(elem)}

2.map的常用方法:get、getOrElse、keys、values、++、++:

根据key返回value值,使用的是一个get,这个时候如果存在对应的值就会返回一个Some类型的值,反之则是一个None,这俩个类型都是Option的子类。最后再.get就会返回对应的值。

    //get方法,传入key,返回some(value)val value: Option[Int] = map.get("a")print(value)//如果想只返回value,则需要用两个get,如下:val value1: Int = map.get("a").getprint(value1)

当对一个不存在的key获取他的值的时候,很显然是会报错的,这个时候可以使用 ,getOrElse()方法,表示当不存在的时候,返回这个方法里面的东西。 

    //如果map中没有传入的key,可以用getOrElse,返回指定的值val value2 = map.get("aa").getOrElse(100)print(value2)

获取所有的key,使用.keys方法,返回值的类型是一个 Iterable [String],根据所获取的key值打印出所对应的value值 

    //keys:获取map所有的keyval keys: Iterable[String] = map.keys//遍历每个key,获取对应的valuekeys.foreach(key =>{val value3: Int = map.get(key).getprint(s"key is $key , value is $value3")})
//values:获取map中所有的valueval values: Iterable[Int] = map.valuesvalues.foreach(print)
val map1 = Map[String,Int](("a",1),("b",2),("c",3),("d",4))val map2 = Map[String,Int](("a",100),("b",2),("c",300),("e",400))//两个方法,map1.++(map2):将map1和map2合并成一个map集合,但map2覆盖map1,也就是两个集合有相同的key,取map2的值//        map1.++:(map2):将map1和map2合并成一个map集合,但map1覆盖map2,也就是两个集合有相同的key,取map1的值val result: Map[String, Int] = map1.++(map2)val result2: Map[String, Int] = map1.++:(map2)

二、可变长Map集合

可变长的Map,导入对应的Map包,使用put方法进行添加元素

 //可变长Map集合//跟set一样,没有MapBuffer,定义可变长Map集合需要导包import scala.collection.mutable.Mapval map3 = Map[String,Int]()map3.put("a",100)map3.put("b",200)map3.put("c",300)

 filter过滤方法:

 //filter :过滤掉不需要的,留下满足条件的val result3: mutable.Map[String, Int] = map3.filter(tp => {val key = tp._1 //._1返回keyval value = tp._2 //._2返回valuevalue == 200})result3.foreach(println)

三、Map的其他方法

 

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盘点并发编程的12种业务场景,面试别再说你不会并发了

前言 并发编程是一项非常重要的技术&#xff0c;无论在面试&#xff0c;还是工作中出现的频率非常高。 并发编程说白了就是多线程编程&#xff0c;但多线程一定比单线程效率更高&#xff1f; 答&#xff1a;不一定&#xff0c;要看具体业务场景。 毕竟如果使用了多线程&…

力扣sql中等篇练习(十一)

力扣sql中等篇练习(十一) 1 好友申请|| :谁有最多的好友 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 出现数字次数越多,就代表它的好友越多 # 对两列数据合并时 不取出合并数据,采用UNION ALL SELECT t1.id,count(*) num FROM (SELECT request…

FreeRTOS - 计数信号量

一.任务功能 1、修改按键功能&#xff0c;模拟停车位出入功能 2、当按键按下 获取车位 3、当按键抬起 释放车位 二.API接口 函数原型SemaphoreHandle_t xSemaphoreCreateCounting( ①UBaseType_t uxMaxCount,②UBaseType_t uxInitialCount );功能概述创建计数信号量&#xff0c…

玩转ChatGPT:辅助编程

一、写在前面 首先让小Chat介绍自己在编程方面的天赋&#xff1a; 总结起来&#xff1a;TA掌握了海量的编程知识&#xff0c;能做到自动代码生成、代码审查优化、编程教学辅导以及实时问题解答。我问TA学习了多少案例&#xff0c;TA说&#xff1a;忘了&#xff0c;但保证够用。…

【Transformer系列(4)】Transformer模型结构超详细解读

前言 前一篇我们一起读了Transformer的论文《Attention Is All You Need》&#xff0c;不知道大家是否真的理解这个传说中的神&#xff08;反正俺是没有~&#xff09; 这两天我又看了一些视频讲解&#xff0c;感谢各位大佬的解读&#xff0c;让我通透了不少。 这篇文章就和…

语音交友app开发中的用户积分系统

引言 在当今数字时代&#xff0c;语音交友app已成为一种流行的社交工具。它们给用户提供了一个平台&#xff0c;在这里他们可以结交新朋友&#xff0c;分享他们的生活和信仰&#xff0c;并建立深厚的人际关系。然而&#xff0c;市场上存在大量的语音交友app&#xff0c;这使得…

深度学习--基础(一)pytorch安装--cpu

在线安装 无GPU的时候&#xff0c;只能安装CPU版本&#xff0c;打开官网 https://pytorch.org/ 直接Pip安装即可 国内访问这些下载安装会出现超时的情况&#xff0c;可以-i指定国内安装源&#xff1a; pip3.11 install torch torchvision torchaudio -i https://pypi.tuna.ts…

java版本电子招标采购系统源码—企业战略布局下的采购

​ 智慧寻源 多策略、多场景寻源&#xff0c;多种看板让寻源过程全程可监控&#xff0c;根据不同采购场景&#xff0c;采取不同寻源策略&#xff0c; 实现采购寻源线上化管控&#xff1b;同时支持公域和私域寻源。 询价比价 全程线上询比价&#xff0c;信息公开透明&#xff0…

信息安全复习四:置换密码乘积密码隐写术

一、章节梗概 置换密码、Rail Fence密码、行置换密码、乘积密码、转子机、隐写术 二、置换技术 2.1 定义 重新排列明文字母&#xff0c;达到信息加密的目的。 与替代密码不同的是&#xff0c;原来明文中的字母同样出现在密文中&#xff0c;只是顺序被打断。 古典的置换密码…

当⻉借⼒阿⾥云落地云原⽣架构转型,运维降本、效率稳定性双升

作者&#xff1a;当贝技术团队 随着业务飞速发展&#xff0c;当贝的传统 IT 资产也渐显臃肿&#xff0c;为了避免制约发展的瓶颈&#xff0c;痛定思痛&#xff0c;技术团队果断变革&#xff1a;核心业务云原生化之后&#xff0c;运维效率、整体稳定性和研发效率均得到了全面提…

【SVN】window SVN安装使用教程(服务器4.3.4版本/客户端1.11.0版本)

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…

中台产品经理02:产品经理如何用一套方法搞定复杂业务拆解?

如果你问我作为企业级应用的产品经理日常工作最大的感受是什么&#xff1f;那就是经常会需要面对众多复杂类业务需求。 原因其实很好理解&#xff0c;B端产品通常需要支持更复杂的业务流程&#xff0c;需求也更加个性化和细分。例如&#xff0c;银行业务系统、医院管理系统、物…

CDR2023新版本安装下载教程

CDR2023是最新发布的一款强大且专业的图像设计软件,适用于平面设计、装饰设计、产品包装设计等领域。coco玛奇朵其主要功能如下: 1. 矢量图形设计:提供强大的绘图与编辑工具,支持创建和编辑各种矢量图形,如线条、曲线、矩形、椭圆、星形等。 2. 文字编辑:提供文字输入、编辑与…

C++类与对象—上

本期我们来学习类与对象 目录 面向过程和面向对象初步认识 类的引入 访问限定符 类的定义 封装 类的作用域 类的实例化 this指针 C语言和C实现Stack的对比 面向过程和面向对象初步认识 C 语言是 面向过程 的&#xff0c; 关注 的是 过程 &#xff0c;分析出求解问题的…

buuctf -2

目录 你竟然赶我走 大白 N种方法解决 [ACTF2020 新生赛]Include 1 php://filter的一些学习 [ACTF2020 新生赛]Exec [强网杯 2019]随便注 你竟然赶我走 1.下载文件&#xff0c;得到一张图片 2.放进010分析&#xff0c;在文件尾得到flag 大白 1.根据题目提示&#xff0…

Pyqt应用相关之与Excel的联接

利用所学相关Pyqt实现对于Excel文件内部数据的处理&#xff0c;首先需要获取Excel的数据&#xff0c;在获取后进行保存处理即可完成相应的操作。 def save_data_btn_click(self):dir self.save_dir_text.text().strip()self.data_frame_group.to_excel(dir output.xlsx,sheet…

HCIP之链路聚合、VRRP

链路聚合 链路聚合 --- 可以将多个物理接口绑定成一个逻辑接口&#xff0c;即将N条物理链路聚合为一条逻辑链路。可以在不升级硬件的条件下&#xff0c;达到增加带宽的效果 我们将逻辑链路&#xff0c;称为聚合链路&#xff0c;在华为设备中称为ETH-TRUNK链路&#xff08;这个技…

物联网产品的开发的难点,致命点是什么?

物联网产品的开发的难点&#xff0c;致命点是什么&#xff1f; 当下是万物互联的时代&#xff0c; 物联网产品本身的难度因行业而异。但是物联网设备上云通信交互就成了各个行业需要首先解决的问题。 物联网通信问题从产品设计一开始&#xff0c;如果不能很好的解决&#xff0c…

马云上三路和下三路

马云的上三路、下三路&#xff0c;马云最牛搭档总结 马云刚最牛搭档&#xff1a;蔡崇信&#xff0c;关明生 《关乎天下》是关明生写的一本书 趣讲大白话&#xff1a;没有方法走不远 【趣讲信息科技143期】 **************************** 马云上三路&#xff1a;使命&#xff0c…

你掌握了stream流的全部新特性吗?

我们知道很早之前java8对于之前的版本更新了许多 新的支持&#xff0c;比如lamda函数式接口的支持&#xff0c;支持更多函数式接口的使用&#xff0c;对链表&#xff0c;数组&#xff0c;队列&#xff0c;集合等实现了Collectio接口的数据结构提供了StreamSupport.stream()支持…