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

Scala---字符串、集合

一、字符串

  1. String
  2. StringBuilder 可变
  3. string操作方法举例
  • 比较:equals
  • 比较忽略大小写:equalsIgnoreCase
  • indexOf:如果字符串中有传入的assci码对应的值,返回下标
1./**
2.* String && StringBuilder
3.*/
4.val str = "abcd"
5.val str1 = "ABCD"
6.
7.println(str.indexOf(97))
8.println(str.indexOf("b"))
9.
10.println(str==str1)
11./**
12.* compareToIgnoreCase
13.* 
14.* 如果参数字符串等于此字符串,则返回值 0;
15.* 如果此字符串小于字符串参数,则返回一个小于 0 的值;
16.* 如果此字符串大于字符串参数,则返回一个大于 0 的值。
17.* 
18.*/
19.println(str.compareToIgnoreCase(str1))
20.
21.val strBuilder = new StringBuilder
22.strBuilder.append("abc")
23.// strBuilder.+('d')
24.strBuilder+ 'd'
25.// strBuilder.++=("efg")
26.strBuilder++= "efg" 
27.// strBuilder.+=('h')
28.strBuilder+= 'h' 
29.strBuilder.append(1.0)
30.strBuilder.append(18f)
31.println(strBuilder)

二、集合

数组

1、创建数组

  • new Array[Int](10)

赋值:arr(0) = xxx

  • Array[String](“s1”,”s2”,”s3”)

2、数组遍历

  • for
  • foreach

3、创建一维数组和二维数组

4、数组中方法举例

  • Array.concate:合并数组
  • Array.fill(5)(“zhangsan”):创建初始值的定长数组

创建两种方式:

1./**
2.* 创建数组两种方式:
3.* 1.new Array[String](3)
4.* 2.直接Array
5.*/
6.
7.//创建类型为Int 长度为3的数组
8.val arr1 = new Array[Int](3)
9.//创建String 类型的数组,直接赋值
10.val arr2 = Array[String]("s100","s200","s300")
11.//赋值
12.arr1(0) = 100
13.arr1(1) = 200
14.arr1(2) = 300

遍历两种方式:

1./**
2.* 遍历两种方式
3.*/
4.for(i <- arr1){
5.  println(i)
6.}
7.arr1.foreach(i => {
8.  println(i)
9.})
10.
11.for(s <- arr2){
12.  println(s)
13.}
14.arr2.foreach { 
15.  x => println(x) 
16.}

创建二维数组:

1./**
2.* 创建二维数组和遍历
3.*/
4.val arr3 = new Array[Array[String]](3)
5.arr3(0)=Array("1","2","3")
6.arr3(1)=Array("4","5","6")
7.arr3(2)=Array("7","8","9")
8.for(i <- 0 until arr3.length){
9.  for(j <- 0 until arr3(i).length){
10.    print(arr3(i)(j)+" ")
11.  }
12.  println()
13.}
14.
15.var count = 0
16.for(arr <- arr3 ;i <- arr){
17.  if(count%3 == 0){
18.     println()
19.  }
20.  print(i+" ")
21.  count +=1 
22.}
23.
24.arr3.foreach { arr => {
25.  arr.foreach { println }
26.}}
27.
28.
29.val arr4 = Array[Array[Int]](Array(1,2,3),Array(4,5,6))
30.arr4.foreach { arr => {
31.  arr.foreach(i => {
32.    println(i)
33.  })
34.}}
35.println("-------")
36.for(arr <- arr4;i <- arr){
37.  println(i)
38.}

5、可变长数组

/**
* 可变长度数组的定义
*/val arr = ArrayBuffer[String]('a','b','c')
arr.append("hello","scala")//添加多个元素
arr.+=("end")//在最后追加元素
arr.+=:("start")//在开头添加元素
arr.foreach(println)

list

1、创建list

val list = List(1,2,3,4)

  • Nil长度为0的list

2、list遍历

foreach ,for

3、list方法举例

  • filter:过滤元素
  • count:计算符合条件的元素个数
  • map:对元素操作
  • flatmap :压扁扁平,先map再flat
1.//创建
2.val list = List(1,2,3,4,5)
3.
4.//遍历
5.list.foreach { x => println(x)}
6.// list.foreach { println}
7.//filter
8.val list1 = list.filter { x => x>3 }
9.list1.foreach { println}
10.
11.//count
12.val value = list1.count { x => x>3 }
13.println(value)
14.
15.//map
16.val nameList = List(
17.  "hello zhangsan",
18.  "hello xasxt",
19.  "hello shsxt"
20.)
21.val mapResult:List[Array[String]] = nameList.map{ x => x.split(" ") }
22.mapResult.foreach{println} 
23.
24.//flatmap
25.val flatMapResult : List[String] = nameList.flatMap{ x => x.split(" ") }
26.flatMapResult.foreach { println }

 

4、可变长List

1./**
2.* 可变长list
3.*/
4.val listBuffer: ListBuffer[Int] = ListBuffer[Int](1,2,3,4,5)
5.listBuffer.append(6,7,8,9)//追加元素
6.listBuffer.+=(10)//在后面追加元素
7.listBuffer.+=:(100)//在开头加入元素
8.listBuffer.foreach(println)

set

1、创建set

注意:set集合会自动去重

2、set遍历

foreach,for

3、set方法举例

  • 交集:intersect ,&
  • 差集: diff ,&~
  • 子集:subsetOf
  • 最大:max
  • 最小:min
  • 转成数组,toList
  • 转成字符串:mkString(“~”)

4、set方法总结

1.//创建 
2.val set1 = Set(1,2,3,4,4)
3.val set2 = Set(1,2,5)
4.//遍历
5.//注意:set会自动去重
6.set1.foreach { println}
7.for(s <- set1){
8.  println(s)
9.}
10.println("*******")
11./**
12.* 方法举例
13.*/
14.
15.//交集
16.val set3 = set1.intersect(set2)
17.set3.foreach{println}
18.val set4 = set1.&(set2)
19.set4.foreach{println}
20.println("*******")
21.//差集
22.set1.diff(set2).foreach { println }
23.set1.&~(set2).foreach { println }
24.//子集
25.set1.subsetOf(set2)
26.
27.//最大值
28.println(set1.max)
29.//最小值
30.println(set1.min)
31.println("****")
32.
33.//转成数组,list
34.set1.toArray.foreach{println}
35.println("****")
36.set1.toList.foreach{println}
37.
38.//mkString
39.println(set1.mkString)
40.println(set1.mkString("\t"))

5、可变长set

1./**
2.* 可变长Set
3.*/
4.import scala.collection.mutable.Set
5.val set = Set[Int](1,2,3,4,5)
6.set.add(100)
7.set.+=(200)
8.set.+=(1,210,300)
9.set.foreach(println)

map

1、map创建

  • Map(1 –>”zhangsan’)
  • Map((1,”zhangsan”))

注意:创建map时,相同的key被后面的相同的key顶替掉,只保留一个。

2、获取map的值

  • map.get(“1”).get
  • map.get(100).getOrElse(“no value”):如果map中没有对应项,赋值为getOrElse传的值。
1.//获取值
2.println(map.get("1").get)
3.val result = map.get(8).getOrElse("no value")
4.println(result)

3、遍历map

  • for,foreach
1.//map遍历
2.for(x <- map){
3.  println("====key:"+x._1+",value:"+x._2)
4.}
5.map.foreach(f => {
6.  println("key:"+ f._1+" ,value:"+f._2)
7.})

4、遍历key

  • map.keys
1.//遍历key
2.val keyIterable = map.keys
3.keyIterable.foreach { key => {
4.println("key:"+key+", value:"+map.get(key).get)
5.} }
6.println("---------")

5、遍历value

  • map.values
1.//遍历value
2.val valueIterable = map.values
3.valueIterable.foreach { value => {
4.  println("value: "+ value)
5.} }

6、合并map

  • ++  例:map1.++(map2)  --map1中加入map2
  • ++:  例:map1.++:(map2) –map2中加入map1

注意:合并map会将map中的相同key的value替换

1.//合并map
2.val map1 = Map(
3.(1,"a"), 
4.(2,"b"), 
5.(3,"c") 
6.)
7.val map2 = Map(
8.(1,"aa"),
9.(2,"bb"),
10.(2,90),
11.(4,22),
12.(4,"dd")
13.)
14.map1.++:(map2).foreach(println)

7、map中的方法举例

  • filter:过滤,留下符合条件的记录
  • count:统计符合条件的记录数
  • contains:map中是否包含某个key
  • exist:符合条件的记录存在不存在
1./**
2.* map方法
3.*/
4.//count
5.val countResult = map.count(p => {
6.  p._2.equals("shsxt")
7.})
8.println(countResult)
9.
10.//filter
11.map.filter(_._2.equals("shsxt")).foreach(println)
12.
13.//contains
14.println(map.contains(2))
15.
16.//exist
17.println(map.exists(f =>{
18.  f._2.equals("xasxt")
19.
20.}))

8、可变长map

*** 可变长Map*/
import scala.collection.mutable.Map
val map = Map[String,Int]()
map.put("hello",100)
map.put("world",200)
map.foreach(println)

相关文章:

Scala---字符串、集合

一、字符串 StringStringBuilder 可变string操作方法举例 比较:equals比较忽略大小写:equalsIgnoreCaseindexOf&#xff1a;如果字符串中有传入的assci码对应的值&#xff0c;返回下标 1./** 2.* String && StringBuilder 3.*/ 4.val str "abcd" 5.val s…...

Power Automate-当收到HTTP请求时触发流程

选择创建自动化云端流&#xff0c;点跳过 第一个操作搜索HTTP&#xff0c;点击当收到HTTP请求时 点击使用示例有效负载生成架构 写入JSON&#xff0c;点击完成 正文JSON架构就自动生成了&#xff0c;再点击左下角的显示高级选项 Method根据需求选择 可以选择JSON中的参数赋值给…...

学习c#的第十四天

目录 C# 接口&#xff08;Interface&#xff09; 接口的特点 定义接口 接口继承 接口和抽象类的区别 C# 命名空间&#xff08;Namespace&#xff09; using 关键字 定义命名空间 嵌套命名空间 C# 接口&#xff08;Interface&#xff09; 接口定义了所有类继承接口时应…...

6.jvm中对象创建流程与内存分配

目录 概述对象的创建流程对象的内存分配方式对象怎样才会进入老年代大对象直接进入老年代内存担保 jvc 相关指令查看jdk默认使用的gc查看当前jdk支持的有哪些gc查看指定进程当前正在使用的gc 结束 概述 相关文章在此总结如下&#xff1a; 文章地址jvm基本知识地址jvm类加载系…...

算法--搜索与图

这里写目录标题 主要内容DFS思想 BFS思想 DFS与BFS的比较一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 主要内容 DFS 思想 会优先向深处搜索 一旦到达最深处 那么会回溯 但是在回溯的过程中 会边回溯边观察是否有能继…...

ROS 文件系统

ROS文件系统级指的是在硬盘上ROS源代码的组织形式&#xff0c;ROS 的文件系统本质上都还是操作系统文件&#xff0c;可以使用Linux命令来操作这些文件&#xff0c;文件操作&#xff0c;包含增删改查与执行等操作&#xff0c;ROS文件系统的一些常用命令如下&#xff1a; 1.增加…...

车载通信与DDS标准解读系列(1):DDS-RPC

▎RPC & DDS-RPC RPC&#xff1a;Remote Procedure Call&#xff0c;远程过程调用。 远程过程调用是一种进程间通信&#xff0c;它允许计算机程序在另一个地址空间中执行子程序&#xff0c;就好像用别人的东西像用自己的一样&#xff0c;常用于分布式系统。 远程过程调用…...

通过构造树形结构介绍map的用法

构造TreeSelect树形结构&#xff1a; 当我们拿到的数据与我们要用的数据不一致时&#xff0c;就要改造成自己想要的数据结构。 后端拿到的数据结构&#xff1a; public class TPMGroup{public string DepName { get; set; }public List<staff> TPMList { get; set; }pu…...

代码随想录算法训练营Day 53 || 1143.最长公共子序列、1035.不相交的线、53. 最大子序和

1143.最长公共子序列 力扣题目链接 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长公共子序列的长度。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&#xff08;也可以不删除任何…...

Oracle JDBC数据库驱动程序介绍

Maven Central上所有Oracle JDBC数据库驱动程序 现在不仅可以在Maven Central上使用甲骨文数据库最新版本&#xff0c;而且还可以获得所有受支持的Oracle JDBC驱动程序发行版&#xff0c;包括19.3.0.0、18.3.0.0、12.2.0.1和11.2.0.4。从现在开始&#xff0c;Maven Central确实…...

scipy实现单因素方差分析

经典例题 某校高二年级共有四个班&#xff0c;采用四种不同的教学方法进行数学教学&#xff0c;为了比较这四种教学法的效果是否存在明显的差异&#xff0c;期末统考后&#xff0c;从这四个班中各抽取 5 名考生的成绩&#xff0c;如下所示。 班级 一班 二班 三班 四班 …...

深度学习实战59-NLP最核心的模型:transformer的搭建与训练过程详解,手把手搭建与跑通

大家好,我是微学AI,今天给大家介绍一下深度学习实战59-NLP最核心的模型:transformer的搭建与训练过程详解,手把手搭建与跑通。transformer是一种基于自注意力机制的深度学习模型,由Vaswani等人在2017年的论文《Attention is All You Need》中提出。它最初被设计用来处理序…...

一阶滤波器(一阶巴特沃斯滤波器)

连续传递函数G(s) 离散传递函数G(z) 转换为差分方程形式 一阶巴特沃斯滤波器Filter Designer参数设计&#xff1a;参考之前的博客Matlab的Filter Designer工具设计二阶低通滤波器 设计采样频率100Hz&#xff0c;截止频率20Hz。 注意&#xff1a;设计参数使用在离散系统中&…...

.net core中前端vue HTML5 History 刷新页面404问题

放到启动的应用程序的最后面 app.Run(async (context) > {context.Response.ContentType "text/html";await context.Response.SendFileAsync(Path.Combine(env.WebRootPath, "index.html")); });https://blog.csdn.net/lee576/article/details/88355…...

【152.乘积最大子数组】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:int maxProduct(vector<int>& nums) {int nnums.size();vector<int> f(n);vector<int> g(n);f[0]g[0]nums[0];int retnums[0];for(int i1;…...

如何开发OA系统场景的系统架构

1.开发OA系统场景的系统架构 针对开发OA系统的场景&#xff0c;以下是一个简单的系统架构示例&#xff0c;包括前端、后端和数据库三个基本部分&#xff1a; 前端&#xff1a; 使用React框架进行前端开发&#xff0c;构建用户界面和交互逻辑。前端模块包括日程管理模块、文档管…...

spring boot 集成 RedisSearch 和 RedisJSON

1. 准备工作 环境说明 java 8&#xff1b;redis7.2.2&#xff0c;redis集成RedisSearch、redisJson 模块&#xff1b;spring boot 2.5在执行 redis 命令&#xff0c; 或者监控 程序执行的redis 指令时&#xff0c;可以采用 redisinsight查看&#xff0c;下载地址。 背景说明 需…...

【Kotlin精简】第8章 协程

1 简介 Kotlin 中的协程提供了一种全新处理并发的方式&#xff0c;您可以在 Android 平台上使用它来简化异步执行的代码。协程是从 Kotlin 1.3 版本开始引入&#xff0c;但这一概念在编程世界诞生的黎明之际就有了&#xff0c;最早使用协程的编程语言可以追溯到 1967 年的 Sim…...

【MATLAB源码-第79期】基于蚯蚓优化算法(EOA)的栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 蚯蚓优化算法&#xff08;Earthworm Optimisation Algorithm, EOA&#xff09;是一种启发式算法&#xff0c;灵感来源于蚯蚓在自然界中的行为模式。蚯蚓优化算法主要模仿了蚯蚓在寻找食物和逃避天敌时的行为策略。以下是蚯蚓…...

RPC实现简单解析

RPC是什么&#xff0c;先摘取一段解释&#xff1a; RPC全称为远程过程调用&#xff08;Remote Procedure Call&#xff09;&#xff0c;它是一种计算机通信协议&#xff0c;允许一个计算机程序调用另一个计算机上的子程序&#xff0c;而无需了解底层网络细节。通过RPC&#xff…...

为内部知识库构建智能问答,利用Taotoken多模型能力选型优化

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为内部知识库构建智能问答&#xff0c;利用Taotoken多模型能力选型优化 当企业计划为内部知识库添加智能问答机器人时&#xff0c;…...

【Gemini商业价值护城河构建指南】:用4维动态估值法锁定长期LTV,错过Q3将丧失成本优化黄金窗口

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Gemini生命周期价值分析 Gemini模型的生命周期价值&#xff08;LTV&#xff09;不仅体现在其推理性能与多模态能力上&#xff0c;更贯穿于部署、迭代、监控与成本优化的全链路环节。相较于传统大模型&#xff…...

OpenWebUI 到底解决了什么,没解决什么?

先说结论OpenWebUI 把多模型切换、对话管理、参数调整从命令行搬到了浏览器&#xff0c;交互体验接近 ChatGPT&#xff0c;但部署本身有硬性前提。免费内网穿透方案有 24 小时域名更换限制&#xff0c;固定域名需付费&#xff0c;远程访问稳定性取决于网络环境。对于只跑单个模…...

OBS高级计时器插件:6种专业模式让你的直播时间管理轻松自如

OBS高级计时器插件&#xff1a;6种专业模式让你的直播时间管理轻松自如 【免费下载链接】obs-advanced-timer 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-timer 还在为直播时间控制而烦恼吗&#xff1f;OBS Advanced Timer计时器插件是你的直播时间管理…...

具身智能的发展趋势对就业市场的影响的时间线是怎样的?

一、时间线为什么是 2026–2027 / 2028–2029 / 2030&#xff1f;1&#xff09;2026–2027&#xff1a;阵痛期&#xff08;工业 / 物流先替代&#xff09;核心依据&#xff1a;量产节奏 成本拐点 机构一致判断出货量预测&#xff1a;多家机构&#xff08;IFR、高盛、麦肯锡&a…...

2026年10款论文降AIGC软件实测:从90%降至10%的宝藏之选

现在学校对 AIGC 的检测越来越严格&#xff0c;降低 AI 率成了毕业季最让人抓狂的问题。我当初写论文的时候也踩了大坑&#xff0c;AI 率直接飙到 80% 多&#xff0c;改得我头发都快掉没了。熬夜一遍遍地调整语句&#xff0c;结果 AI 率没降下来&#xff0c;查重率反而越改越高…...

3步搞定B站m4s转MP4:开源工具让你的缓存视频重获新生

3步搞定B站m4s转MP4&#xff1a;开源工具让你的缓存视频重获新生 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经遇到过这样的烦恼&am…...

微信小程序抓包实战:安卓模拟器+BurpSuite无Root稳定方案

1. 为什么微信小程序抓包成了“玄学”&#xff0c;而这条路径能绕过所有坑做移动安全测试或前端调试的同行&#xff0c;大概率都经历过这种场景&#xff1a;想看看微信小程序发了什么请求、带了哪些参数、响应体里有没有敏感字段&#xff0c;结果一上手就卡在第一步——连包都抓…...

Grafana CVE-2021-43798路径遍历漏洞原理与实战复现

1. 这个漏洞不是“找文件”&#xff0c;而是Grafana的API信任机制被彻底绕过你可能在靶场里点开Grafana登录页&#xff0c;输入默认账号密码&#xff0c;进后台点几下就以为复现完成了——但那只是界面&#xff0c;不是漏洞。CVE-2021-43798的本质&#xff0c;是Grafana 8.x版本…...

高性能桌面管理架构解析:NoFences技术实现深度剖析

高性能桌面管理架构解析&#xff1a;NoFences技术实现深度剖析 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences NoFences作为一款开源免费的桌面管理工具&#xff0c;通过创新…...