Scala基础语法:Set和Map集合-----(5)

nim-stringinterpolation:使用printf语法进行字符串插值 字符串插值 这是一个针对Nim的小型字符串插值库,提供了类似于prinftf的语法。 该库的灵感来自于Scala的字符串插值,并提供了一个类似的界面。 基本上有三种格式模板/宏: ifmt*(formatString: string): expr 在内部,这是format的包装。 格式字符串可以包含ifmt"x = $x"或表达式ifmt"x = ${x+1}" 。 两者都可以具有printf格式的后缀,例如ifmt"iteration = $i], error = ${error*100}%6.2f %%" 。 如果没有格式化程序,将使用%s格式化程序,这将导致对$的调用(请参阅format )。 为了在格式字符串中转义$或% ,请使用$$和%% 。 类型不匹配或格式错误的格式字符串会产生编译时错误。 format*(formatString: string{lit}, ar 立即下载

Scala中集合的分类

​ Scala。collection。immutable --------不可变的

​ Scala.collection。mutable--------可变的

set集合

​ 和Java中set几乎一样:元素不重复,元素无排序

​ 分为:可变set 不可变set

​ 是否为可变还是不可变,是取决于导包

scala> val a1=set(1,2,3)   				 //Scala中特别注重首字母大小写,这个问题就是首字母小写形成错误的
<console>:11: error: not found: value set
       val a1=set(1,2,3)
              ^

scala> val a1=Set(1,2,3)  				    //首字母大写,正确写法    但值得注意的是,目前么有导包显示immutable
a1: scala.collection.immutable.Set[Int] = Set(1, 2, 3)   			        //所以Scala中默认集合为不可变集合

scala> a1 + 5         								  //集合添加一个新元素,返回一个新集合,
res0: scala.collection.immutable.Set[Int] = Set(1, 2, 3, 5)

scala> a1               						    //原来的a1集合元素内容没有变
res1: scala.collection.immutable.Set[Int] = Set(1, 2, 3)

scala> val a2= a1 +5       						 //返回一个新集合,也是不可变集合
a2: scala.collection.immutable.Set[Int] = Set(1, 2, 3, 5)

scala> a2
res2: scala.collection.immutable.Set[Int] = Set(1, 2, 3, 5)

scala> val a3 = a1 - 3    				  //删除集合里面的元素,但是a1集合内容还是不变的,只是得到的结果返回个新集合
a3: scala.collection.immutable.Set[Int] = Set(1, 2)

scala> a1
res3: scala.collection.immutable.Set[Int] = Set(1, 2, 3)

scala> val a4 = a1 ++ Set(4,5,6) 							     //添加新集合内容
a4: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 2, 3, 4)

scala> val a5 ++ List(7,8,9)  							 //错误写法,添加新列表   没有赋值等号,跟参数
     | 
     | val a5 ++ List(7,8,9)
<console>:3: error: '=' expected but ';' found.
val a5 ++ List(7,8,9)
^

scala> val a5 = a1 ++ List(7,8,9)  							  //添加新列表的正确格式
a5: scala.collection.immutable.Set[Int] = Set(1, 9, 2, 7, 3, 8)

scala> a1     									 //不管添加,删除   原有的集合内容是不会变的
res4: scala.collection.immutable.Set[Int] = Set(1, 2, 3)

scala> a5      									 //只是把结果返回得到一个新集合
res5: scala.collection.immutable.Set[Int] = Set(1, 9, 2, 7, 3, 8)

可变set:

scala> import scala.collection.mutable.Set 					  //可变set需要导包
import scala.collection.mutable.Set

scala> val a1=Set(1,1,2,2,3,3,4,5,5,6,6,7,8,8,9,9)    			 //设置一个可变set   可以看出来set集合的特点
a1: scala.collection.mutable.Set[Int] = Set(9, 1, 5, 2, 6, 3, 7, 4, 8)      			 //不重复,无序性

scala> val a2 = a1 += 11     						     //可变Set和不可变Set  在添加元素时所有不同  
a2: a1.type = Set(9, 1, 5, 2, 6, 3, 7, 4, 11, 8)

scala> val a3 = a1 -= 9        							   //可变Set和不可变Set  在删除元素时所有不同 
a3: a1.type = Set(1, 5, 2, 6, 3, 7, 4, 11, 8)

scala> a1                         					 //切记,可变set的元素内容回随着添加,删除的变化而变化,
res12: scala.collection.mutable.Set[Int] = Set(1, 5, 2, 6, 3, 7, 4, 11, 8)

Map映射:

​ Map映射是一推 对偶元组(就是只有两个元素的列表,或者也是kv键值对)的集合

​ 分为:可变Map 不可变Map

​ 默认情况下都是不可变的 而可变Map需要自己手动导包
import scala.collection.mutable.Map

scala> val a1=Map("name"->"DW","age"->"28")  						 //创建map集合第一种格式
a1: scala.collection.immutable.Map[String,String] = Map(name -> DW, age -> 28)

scala> val a2=Map(("name","DW"),("age","28")) 							  //创建map集合第二种格式
a2: scala.collection.immutable.Map[String,String] = Map(name -> DW, age -> 28)

scala> scala.collection.mutable.Map     								 //错误导包方式
res13: collection.mutable.Map.type = scala.collection.mutable.Map$@4250b0c1

scala> import scala.collection.mutable.Map 							  //正确导包方式
import scala.collection.mutable.Map

scala> val a3=Map(("name","kk"),("age","55"))  						   //创建可变map集合
a3: scala.collection.mutable.Map[String,String] = Map(age -> 55, name -> kk)

scala> a1("name")   									  //根据key值求value的值
res14: String = DW

scala> a3("name") 									  //根据key值求value的值
res15: String = kk

scala> a1("name2")  							 //根据kay值求value的值,如果没有这个key值,会报错
java.util.NoSuchElementException: key not found: name2
  at scala.collection.MapLike$class.default(MapLike.scala:228)
  at scala.collection.AbstractMap.default(Map.scala:59)
  at scala.collection.MapLike$class.apply(MapLike.scala:141)
  at scala.collection.AbstractMap.apply(Map.scala:59)
  ... 32 elided
	
scala> a1.get("name")     									 //用get方法取值
res17: Option[String] = Some(DW)
	
scala> a1.get("name2") 									  //如果没有相应的v值,会返回:None
res18: Option[String] = None


   //用getorelse方法,最大好处就是没有相应的key值,会返回自己指定的内容
scala> a1.getOrElse("name","hello")       
res19: String = DW

scala> a1.getOrElse("name2","hello")
res20: String = hello

scala> a1.kays   										 //取所有的key值,注意书写规范
<console>:15: error: value kays is not a member of scala.collection.immutable.Map[String,String]
       a1.kays
          ^

scala> a1.keys 												  //取所有的key值
res22: Iterable[String] = Set(name, age)

scala> a1.values  											  //取所有的value值
res23: Iterable[String] = MapLike(DW, 28)

可变Map的操作:

scala> a3   				 //在上面都a3的内容了     看是不是可变还是不变就看系统提示字符里是mutable还是immutable呢
res24: scala.collection.mutable.Map[String,String] = Map(age -> 55, name -> kk)

scala> a3("name")="city"  									  //修改指定的k值

scala> a3  											  //完成修改后的内容
res26: scala.collection.mutable.Map[String,String] = Map(age -> 55, name -> city)

scala> a3.+=("hobby"->"playball") 							  //添加内容,注意+=在这里相当于方法一样
res27: a3.type = Map(hobby -> playball, age -> 55, name -> city)

scala> a3.+=("city","shanxi")      						 //添加内容,注意+=在这里相当于方法一样(第二种格式)
<console>:15: error: type mismatch; 							  //注意书写规范,上个括号kv的圆括号
 found   : String("city")
 required: (String, String)
       a3.+=("city","shanxi")
             ^
<console>:15: error: type mismatch;
 found   : String("shanxi")
 required: (String, String)
       a3.+=("city","shanxi")
                    ^

scala> a3.+=(("city","shanxi"))                                                   //添加内容,注意+=在这里相当于方法一样(第二种格式)
res29: a3.type = Map(city -> shanxi, hobby -> playball, age -> 55, name -> city)

scala> a3.+=(("city","shanxi"),("hadoop","mapreduce"))                            //也可以添加多个kv值
res30: a3.type = Map(hadoop -> mapreduce, city -> shanxi, hobby -> playball, age -> 55, name -> city)

scala> a3 -=("hobby")     							 //注意在删除k时,-=不是以方法存在的  值得注意一点
res31: a3.type = Map(hadoop -> mapreduce, city -> shanxi, age -> 55, name -> city)

scala> a3.ermove("city")  							 //第二种删除方式  注意书写格式
<console>:15: error: value ermove is not a member of scala.collection.mutable.Map[String,String]
       a3.ermove("city")
          ^

scala> a3.remove("city") 							    //第二种正确的格式
res33: Option[String] = Some(shanxi)

scala> a3    							 //因为是可变map,所以在添加删除修改后,原本的a3Map集合kv内容发生了改变
res34: scala.collection.mutable.Map[String,String] = Map(hadoop -> mapreduce, age -> 55, name -> city)

Map的遍历:

scala> for(i <- a3)println(i)    
(hadoop,mapreduce)
(age,55)
(name,city)

scala> for(k <- a3.keys)println(s"${k}---->${a3(k)}")     //用s表达式插入数据,
hadoop---->mapreduce                                         //如不理解s表达式
age---->55                                                     //可以在基础语法第一讲最后结尾除查看
name---->city                                                     //算了  我还是在下面演示一下吧

scala> for((k,v)<-a3)println(s"$k---->$v")
hadoop---->mapreduce
age---->55
name---->city

s表达式拼接:

//s表达式拼接
scala> val a="hello"
a: String = hello

scala> val b="wangjie"
b: String = wangjie

scala> val c = s"$a---->$b"   
c: String = hello---->wangjie

scala> val d = s"$(a)123  \\wusuiwei//  \\yanggun// 123$(b)" 					 //注意要用{} 花括号
<console>:1: error: invalid string interpolation: `$$', `$'ident or `$'BlockExpr expected
val d = s"$(a)123  \\wusuiwei//  \\yanggun// 123$(b)"
          ^

scala> val d = s"${a}123  \\wusuiwei//  \\yanggun// 123${b}" 					  //正确用法
d: String = hello123  \wusuiwei//  \yanggun// 123wangjie

//一般方式拼接
scala> val e = a+b        
e: String = hellowangjie

scala> val f = a+"---->"+b
f: String = hello---->wangjie

scala> val f1 = a+"aaaaa"+b
f1: String = helloaaaaawangjie

scala> val f1 = a+" aaaaa "+b
f1: String = hello aaaaa wangjie
支付域——“清算、结算、清结算” 本文深入探讨了支付系统中的清算和结算流程,包括核心流程、模块设计及特殊场景处理。文章详细阐述了交易收单、资金冻结、清分规则、清算批处理、结算出账等关键步骤,并讨论了交易失败、数据不一致、退款、汇率波动等异常情况的处理方法。 阅读详情

相关推荐

六自由度机器人(机械臂)运动学建模及运动规划系列(四)——轨迹规划

本篇介绍了六轴机器人关节空间以及笛卡尔空间轨迹规划的简单方法,并给出了一种几何解法,以简化规划过程,并提供了简单的Matlab轨迹规划函数介绍。

weixin_47849087的博客 5万+

HiveSQL 常用函数

【代码】HiveSQL 常用函数。

文文x的博客 443

DSP28335 ADC模块实战:从寄存器配置到精准数据采集(附代码详解)

本文详细解析DSP28335的ADC模块配置与数据采集实战,涵盖寄存器设置、采样窗口优化、中断处理及代码实现。重点解决ADC精度问题,如采样窗口不足导致数据偏差,提供完整代码示例和调试技巧,助力工程师实现精准数据采集。

kkk56的博客 865

Scala--String Interpolation

Scala支持以下几种字符串插入: s, 内容可以使用引用变量,使用引用变量, 使用{}引用表达式, 类似于JSP中的El表达式. f, 内容可以使用%s, %d等占位符, 类似于C语言中的printf(print format), 但是要结合$符号用. raw, 里面的类容会作为原始内容, 不会有任何改变 val age = 33//插入变量 println(s"I'm $age

a1158375969的专栏 700

识别产品外观的合格软件_工业视觉工业质检视觉识别机器视觉视觉检测智能制造工业检测缺陷...

随着工业物联网技术的迅猛发展,掀起了以云计算、大数据、以及人工智能 AI 等信息技术正与传统工业深入融合,由此衍生的 “智能制造4.0” 理念,正在为全球工业带来深远变革。中国的制造业巨头也纷纷借此发力,向智能化、数字化制造演进,实施战略转型。如何高效科学的管理和分析制造业务链上的生产价值,推进制造企业生产工艺优化与产品质量提升是每一个制造企业在数字化、智能化转型过程中的必经之路。业务发展带来的挑...

weixin_42502419的博客 754

Ascend C 算子开发遇到的问题及解决方法

在学习Ascend C算子开发进阶课程的时候,进行Ascend C自定义算子工程、算子调用等实验,在开发环境中遇到了一些问题,在这里记录一下。首先如果在启智社区CANN版本为6.3 ,要进行Ascend C算子开发,需要更新CANN版本。

qq_45257495的博客 5109

vue基础知识

vue 第三方开发的,基于MVVM设计模式的,渐进式的,纯前端js框架 以数据操作(增删改查)为主的项目,都可以用vue开发 原生 浏览器自带的 dom 函数库 jquery vue使用 下载vue.js文件到网页中引入 引入<script src="js/vue.js"> 脚手架:一套标准的文件夹和文件结构 Typora ---一款简洁的Markdown编辑器 ...

A123ppleQueen的博客 560

sap 标准委外和工序委外_SAP PP 工序委外详解

在SAP里有外包和外协两种:外包:指把原材料发出去,扣减库存,然后供应商加工生产,最后再作为成品入库。主要是在MM模块下实现的。对应的英语叫Subcontracting。外协:一般是指某种工序外协,在工艺路线里设置某个工序为外协后,系统自动会产生一个采购订单,一般是指采购某种服务。采购回来后再继续本公司的其他工序。主要是在PP模块下实现的。对应的英语叫Processing。2.当有委外加工的业务流...

weixin_26849971的博客 4581

有关Scala的学生问题,第1部分

前言 我目前正在教授“ 应用文本分析”课程,并且正在使用Scala作为该课程中教授和使用的编程语言。 我没有创造更多的教程,而是想着当他回答学生问题时,我会从Brian Dunning的剧本中摘录他的Skeptoid播客(强烈推荐)。 因此,根据目前为止的阅读和作业,我让课程中的学生提交了有关Scala的问题。 这篇文章涵盖了其中一半以上的内容,其余的将在后续文章中介绍。 我从一些更基本...

878

海洋捕食者算法(MPA)详解:从海洋生态智慧到高性能优化

摘要: 海洋捕食者算法(MPA)是一种基于海洋生态觅食行为的元启发式优化算法,模拟捕食者(如鲨鱼)的布朗运动和莱维飞行策略进行全局与局部搜索。算法分为三阶段:高速比阶段(全局探索)、单位速度比阶段(平衡搜索)和低速比阶段(局部开发),通过精英矩阵和FADs效应(概率扰动)避免早熟收敛。MPA具有参数少、收敛快、寻优能力强等特点,适用于复杂优化问题,其数学模型将生物行为转化为随机游走与自适应策略,并通过收敛因子动态调整探索-开发平衡。实验表明,MPA在多个基准问题上表现优异。

qq_42212808的博客 274

【AI黑话日日新】什么是AI Infra?

是支撑AI模型开发、训练、推理、部署与规模化运营的,是连接底层算力与上层AI应用的“数字基建”。没有高效的AI Infra,大模型训练、推理与落地都无法高效实现。

专注:太空算力、AI infra、异构调度、大模型成本工程 1108

SCALA基础

不过,在Scala中,if/else是表达式,有值,这个值就是跟在if或else之后的表达式的值。直接使用throw关键字抛出异常。注意:在Scala中,定义变量可以不指定类型,因为Scala会进行类型的自动推导。1. 数值类型:Byte,Short,Int,Long,Float,Double。注意:在上面的例子中,foreach接收了另一个函数(println)作为值。当val被申明为lazy时,它的初始化将被推迟,直到我们首次对它取值。注意:可以不用显式指定变量的类型,Scala会进行自动的类型推到。

qq_58476985的博客 1317

端到端自动驾驶:特斯拉FSD Beta技术拆解

端到端自动驾驶:特斯拉FSD Beta技术拆解 ,人工智能,计算机视觉,大模型,AI,这篇文章围绕特斯拉FSD Beta的端到端自动驾驶技术展开,先介绍端到端自动驾驶的定义、与传统方案的区别及FSD Beta的特点,再阐述其硬件基础、技术架构,解析关键技术,还涉及训练数据与标注、安全与冗余设计、实际应用场景与挑战以及技术迭代与更新等内容,展现了该技术的多方面情况。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 18万+

Scala集合Map和Set

文章目录MapSet Map Scala中的Map和Java类似,是一个散列表 存储的内容也是 键值对 Scala中不可变Map是有序的 可变Map是无序 的 可变Map scala.collection.mutable.Map 不可变Map scala.collection.immutable.Map 操作示例如下 def main(args: Array[String]): Unit = { //构造不可变Map /* 默认 使用 不可变map 在map底层,每队 key

zhangxm_qz的博客 960

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Scala—Set集合用法详解

Set

喻师傅的学习笔记 2264

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Scala集合完全指南:List、Set、Map的创建、操作与实战

集合特点适用场景List有序,可重复需要保持顺序的数据,头部操作频繁的场景Set无序,唯一去重、集合运算、成员检查Map键值对,键唯一字典、缓存、配置映射。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3462

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

scala——Iterable集合、Seq集合、Set集合、Map集合使用示例

1. 掌握Iterable集合相关内容. 2. 掌握Seq集合相关内容. 3. 掌握Set集合相关内容. 4. 掌握Map集合相关内容. 5. 掌握统计字符个数案例.

qq_40585384的博客 2069

【Scala】基础4:集合——List、Set和Map

List 一个不可变的单链表,可以作为一个函数调用List来创建一个列表,并以逗号分隔参数的形式传入列表的内容。 同Java中一样,如果没给List指定泛型,列表中可以存放不同数据类型的元素。指定泛型后,只能存放某一特定数据类型的元素。 要直接访问单个元素,可以作为一个函数来调用这个列表,并传入该元素的索引(从0开始) 可以用head()方法访问一个列表的首元素,可以用tail()方法...

hr786250678的博客 534

快速入门Scala⑧ 对Set与Map操作

Set(集)是代表没有重复元素的集合 元素不重复 不保证插入顺序 不可变Set集 语法 创建一个空的不可变的集 var/val 变量名 = Set[类型]() 给定元素来创建一个不可变集 var/val 变量名 = Set(元素1,元素2,元素3....) 示例一 定义一个空的不可变集 参考代码 scala> var a=Set[Int]() a: scala.c...

大数据记录 9525

Scala的Set,Map

在Scala中,`Set`和`Map`是两种非常重要的集合类型,它们分别用于存储唯一元素和键值对。

2401_82393285的博客 1052

scala——基础语法:4.映射Map用法

1. Scala映射(Map)是一组键/值对的对象。 任何值都可以根据键来进行检索。键在映射中是唯一的,但值不一定是唯一的。映射也称为哈希表。映射有两种,不可变的和可变的。可变对象和不可变对象之间的区别在于,当对象不可变时,对象本身无法更改。 默认情况下,Scala使用不可变映射(Map)。如果要使用可变集合(Set),则必须明确导入scala.collection.mutable.Ma...

ant的博客 2693

scala List、Map、Set集合基本操作

scala>>List package cn.actor object ListTest { def main(args: Array[String]): Unit = { //创建一个list val list1 = List(1,2,3,4,5,6,7,8) //每一个元素乘10 生成新集合 val list2 = list1.map(x...

进行中 1481

Scala第十八章节(Iterable集合、Seq集合、Set集合、Map集合以及统计字符个数案例)

1. 掌握Iterable集合相关内容. 2. 掌握Seq集合相关内容. 3. 掌握Set集合相关内容. 4. 掌握Map集合相关内容. 5. 掌握统计字符个数案例.

m0_56525833的博客 1770

Scala系列6:Scala中Array,BufferArray,元组,list,set,map等集合使用详解

Scala中集合类的序列有:数组,元组,列表,Set集,Map映射,其中数组,列表,Set,Map又分为可变和不可变两种。下面就此详细展开介绍使用。 0.数组的使用详解 scala中数组的概念是和Java类似,可以用数组来存放一组数据。scala中,有两种数组,一种是定长数组,另一种是变长数组。 0.1 定长数组 定长数组指的是数组的长度是不允许改变的。通过指定长度定义数组,语法格式如下: val/var 变量名 = new Array[元素类型](数组长度) //方式1:通过指定...

涤生大数据 2626

五, Scala常见集合类总结(Array, List, Set, Map)

五, Scala常见集合类总结(Array, List, Set, Map) 5.1 Scala集合概述 Scala 的集合有三大类: 序列seq, 集Set, 映射Map, 所有的集合都扩展自 Iterable 特质; 对于几乎所有的集合类, Scala都同时提供了可变和不可变的版本. 分别位于以下两个包: scala.collection.immutable, scala.collection.mutable Q:什么是可变,不可变集合? a. Scala 不可变集合, 就是指该集合对象不可修

菜菜的大数据开发の路 2030

Scala集合、数组Array、List、Set、Map

Scala集合、数组Array、List、Set、Map 作者介绍:小赵,狐小E资深开发工程师,专注移动协同办公平台的SAAS软件开发以及轻应用开发 最近开发了一款移动办公软件狐小E Scala集合 Scala提供了一套很好的集合实现,提供了一些集合类型的抽象。 Scala 集合分为可变的和不可变的集合。 可变集合可以在适当的地方被更新或扩展。这意味着随时可以修改,添加,移除一个集合的元素。 而不可变集合类永远不会改变。但是,你仍然可以模拟添加,移除或更新操作。但这些操作将在每一种情况下都返回一个新的集合

zr19305489的博客 752
上一篇: Scala基本语法:数组和集合------List与ListBuffer------(4)
下一篇: MySQL四类约束primary key,auto_increment,unique,not null详解;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值