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)

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

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

相关文章

051-第三代软件开发-日志容量时间限制

第三代软件开发-日志容量时间限制 文章目录 第三代软件开发-日志容量时间限制项目介绍日志容量时间限制 关键字&#xff1a; Qt、 Qml、 Time、 容量、 大小 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language…

【物联网】BDS/GNSS 全星座定位导航模块——ATGM332D-5N

随着科技的不断进步&#xff0c;导航系统已经成为我们日常生活中不可或缺的一部分。传统的导航系统往往只提供基本的地图和路线规划&#xff0c;对于一些特殊需求或个性化定位并不够满足。全星座定位导航模块的出现&#xff0c;为我们带来了全新的导航体验。通过结合星座学说和…

Panda3d 外部硬件接口介绍

Panda3d 外部硬件接口介绍 文章目录 Panda3d 外部硬件接口介绍键盘支持(Keyboard Support)轮询接口击键事件原始键盘事件鼠标支持(Mouse Support)鼠标模式绝对鼠标模式相对鼠标模式受限鼠标模式验证鼠标模式多个鼠标(Multiple Mice )Linux 下的多个鼠标(Multiple Mice u…

此芯科技加入绿色计算产业联盟,参编绿色计算产业发展白皮书

近日&#xff0c;此芯科技正式加入绿色计算产业联盟&#xff08;Green Computing Consortium&#xff0c;简称GCC&#xff09;&#xff0c;以Arm架构通用智能CPU芯片及高能效的Arm PC计算解决方案加速构建软硬协同的绿色计算生态体系&#xff0c;推动绿色计算产业加速发展。 继…

【01】Istio-1.17 部署

1.1 部署Istio控制平面 部署方法 istioctl istio的专用管理工具&#xff0c;支持定制控制平面和数据平面通过命令行的选项支持完整的IstioOperator API命令行各选项可用于单独设置&#xff0c;以及接收包含IstioOperator自定义资源(CR)的yaml文件 Istio Operator Istio相关的自…

CCNA课程实验-14-Final_Lab

目录 实验条件网络拓朴需求 配置实现1. 配置PC1~3, DHCP_Server的vlan2. VLAN10、20的网关为MSW1对应的SVI&#xff0c;VLAN30、40的网关为MSW2对应的SVI&#xff1b;3. 配置5台交换机之间线路均为Trunk4. 配置5台交换机均启用Rapid-PVST(RSTP)5. 配置DHCP Server&#xff0c;创…

ROS 工作空间

ROS工作空间一般包括四个目录空间&#xff1a; 1、src目录&#xff1a;用于存放所有ROS包的源代码。在该目录下&#xff0c;可以创建多个子目录&#xff0c;每个子目录对应一个ROS包。 2、build目录&#xff1a;编译过程中产生的中间文件和缓存信息将被存储在此目录中。当需要…

眼科动态图像处理系统使用说明(2023-8-11 ccc)

眼科动态图像处理系统使用说明 2023-8-11 ccc 动态眼科图像捕捉存贮分析与传输系统&#xff0c;是由计算机软件工程师和医学专家组结合&#xff0c;为满足医院临床工作的需要&#xff0c;在2000年开发的专门用于各类眼科图像自动化分析、处理和传输的软件系统。该系统可以和各…

openwrt Docker不能联网

文章参考:docker上网(docker安装openwrt无法上网) - 老白网络 外网不能访问内网是应为防火墙。内网访问外网如下: 清理容器垃圾 docker volume prune -f 创建一个网络 docker network create --subnet172.18.0.0/16 mynet 通过该网络创建gerrit docker run -tid --name ge…

【Python】Pyinstaller打包Linux运行文件,暴露配置文件

Pyinstaller可以将python程序打包成可执行文件&#xff0c;在windows上是exe文件&#xff0c;在linux上是二进制可执行文件。 工作中有需求是把本地python工程打包成后台可运行的服务&#xff0c;考虑到部署环境的不同&#xff0c;可以使用docker镜像的方式&#xff0c;也可以使…

Ubuntu 搜狗输入法无法输入中文解决方案(不需要重装,不需要重启服务器)

Ubuntu 搜狗输入法突然无法输入中文&#xff0c;上午还好用&#xff0c;下午就不好用了&#xff0c;直接上解决方案 1.终端输入pidof fcitx找到搜狗的进程&#xff0c;如下图红框中的就是进程 2.直接杀掉这个进程 3.其实到第二步&#xff0c;如果搜狗输入法自动重启了&#xf…

数据挖掘 决策树

# 编码声明&#xff0c;并不是注释&#xff0c;而是一种特殊的源文件指令&#xff0c;用于指定文件的字符编码格式 # -*- coding: utf-8 -*-import pandas as pd # 提供了DataFrame等数据结构 from sklearn.tree import DecisionTreeClassifier, export_graphviz # 决策树分类…

浪涌防护器件要选对,布局布线更重要!|深圳比创达电子EMC(上)

浪涌测试&#xff0c;作为最常见的EMC抗干扰测试项目之一&#xff0c;基本上是家用消费电子必测的项目&#xff1b;其测试目的是为了验证产品在承受外部的浪涌冲击时能否正常工作。 一、浪涌冲击产生机理及其防护设计 浪涌冲击主要包括雷击浪涌冲击、电力系统内部的开关噪声冲…

笔记本电脑没有声音?几招恢复声音流畅!

笔记本电脑已经成为我们日常生活和工作的重要工具&#xff0c;而其中的声音是其功能之一。然而&#xff0c;有时您可能会遇到笔记本电脑没有声音的问题&#xff0c;这可能是由多种原因引起的。在本文中&#xff0c;我们将深入探讨笔记本电脑没有声音的常见原因&#xff0c;并提…

MCTS蒙特卡洛树搜索(The Monte Carlo Tree Search)

1、简介 蒙特卡罗树搜索是一类树搜索算法的统称&#xff0c;简称MCTS。它是一种用于某些决策过程的启发式搜索算法&#xff0c;且在搜索空间巨大的游戏中会比较有效。从全局来看&#xff0c;蒙特卡洛树搜索的主要目标是&#xff1a;给定一个游戏状态来选择最佳的下一步。等常见…

中小企业如何最大程度地利用CRM系统的潜力?

在当今竞争激烈的商业世界中&#xff0c;客户关系管理&#xff08;CRM&#xff09;数字化转型已经成为大企业成功的重要秘诀。大型跨国公司如亚马逊、苹果和微软等已经在CRM数字化方面走在了前列&#xff0c;实现了高度个性化的客户体验&#xff0c;加强了客户忠诚度。 然而&a…

景联文科技入选量子位智库《中国AIGC数据标注产业全景报告》数据标注行业代表机构

量子位智库《中国AIGC数据标注产业全景报告》中指出&#xff0c;数据标注处于重新洗牌时期&#xff0c;更高质量、专业化的数据标注成为刚需。未来五年&#xff0c;国内AI基础数据服务将达到百亿规模&#xff0c;年复合增长率在27%左右。 基于数据基础设施建设、大模型/AI技术理…

使用手机作为电脑的麦克风和摄像头外设

工具 Iriun Iriun 电脑端安装&#xff1a;Iriun Android: Iriun 4K Webcam for PC and Mac - Apps on Google Play Apple: Iriun Webcam for PC and Mac on the App Store 基础功能免费&#xff0c;普通使用足够了。 付费功能&#xff1a; 使用 这里有介绍&#xff1a…

腾讯待办是什么?关停之后如何继续提醒待办事项?

由于业务方向调整&#xff0c;腾讯待办将于2023年的12月20日全面停止运营并下架。那么腾讯待办是什么呢&#xff1f;它是一款以微信小程序呈现的待办事项和日程管理工具&#xff0c;旨在帮助用户更好地管理自己的待办事项和日程安排。用户可以在该小程序中创建待办事项、设置提…

XD6500S— LoRa SIP模块芯片 集成了射频前端和LoRa射频收发器SX1262 应用温湿度传感器 资产跟踪等

XD6500S是一系列LoRa SIP模块&#xff0c;集成了射频前端和LoRa射频收发器SX1262系列&#xff0c;支持LoRa和FSK调制。 收发器SX1262系列&#xff0c;支持LoRa和FSK调制。LoRa技术是一种扩频协议&#xff0c;针对LPWAN 应用的低数据速率、超远距离和超低功耗通信进行了优化。通…