scala基础学习(数据类型)-集合

文章目录

集合

Scala Set(集合)是没有重复的对象集合,所有的元素都是唯一的。

Scala 集合分为可变的和不可变的集合。

默认情况下,Scala 使用的是不可变集合,如果你想使用可变集合,需要引用 scala.collection.mutable.Set 包。

默认引用 scala.collection.immutable.Set,不可变集合实例如下:

创建集合

scala 复制代码
val set1:Set[Int] = Set(1,2,3,4)
println(set1)

isEmpty

scala 复制代码
// 判断是否为为空
println(set1.isEmpty) //false

获取数据

  • 用过索引获取
  • 提取列表头:head,提取列表尾:last ,返回元素
  • 从前提取元素:take,从后提取元素:takeRight,返回列表
scala 复制代码
//返回集合第一个元素
println(set1.head)
println(set1.last)
//1
//4

// 获取集合
println(set1.take(2))
println(set1.takeRight(2))
//Set(1, 2)
//Set(3, 4)

添加元素

scala 复制代码
// 添加元素
var newset = set1 + 6
println(newset)
//Set(1, 6, 2, 3, 4)

// 删除元素,元素不存在无影响
val newset2 = set1 - 99
println(newset2)
//Set(1, 2, 3, 4)

// 连接集合(并集)
println(set1++Set(1,7))
//Set(1, 2, 7, 3, 4)

删除元素

实际就是,获取剩余元素新列表,并不是删除

  • 删除头部元素,得到其余元素,tail

  • 删除尾部元素,得到其余元素,init

  • 删除前n个元素drop

  • 删除后n个元素dropRight

scala 复制代码
println(set1.init)
println(set1.tail)
//Set(1, 2, 3)
//Set(2, 3, 4)

// 参数是选取的个数
println(set1.drop(2))
println(set1.dropRight(2))
//Set(3, 4)
//Set(1, 2)

常见方法

filter,map,reduce,fold,dropWhile,find,forall,...,含义方式同其余容器

交集 &

效果都相同返回新集合

scala 复制代码
println(Set(1,2,3) & Set(1,4,5))
println(Set(1,2,3).&(Set(1,4,5)))
println(Set(1,2,3).intersect(Set(1,4,5)))
println(Set(1,2,3) intersect Set(1,4,5))

//Set(1)

差集 diff --

a -- b,a对b的差集

scala 复制代码
// 差集
println(Set(1, 2, 3)--Set(1, 4, 5))
println(Set(1, 2, 3) diff Set(1, 4, 5))

并集 ++ union

scala 复制代码
println(Set(1,2,3,4).subsetOf(Set(1,2,3,4,5)),"ldsx")

to string

scala 复制代码
// to string
import scala.collection.mutable.StringBuilder
val sb = new StringBuilder
set1.addString(sb, ", ")
println(sb)
val result = sb.toString
println(result)

// to string
println(set1.toString())

// to string
println(set1.mkString(","))

to list

scala 复制代码
println(set1.toList)

to Array

scala 复制代码
println(set1.toArray)

to Map

scala 复制代码
println(set1.map(key => (key, key * key)))
println(set1.map(key => (key, "1"+key)))
println(set1.map(key => (key, key * key)).toMap)

其余常用方法

方法同其余容器类型数据

复制代码
head,last      
take,takeRight 

init,tail
drop dropRight

fold,reduce,sum
dropWhile,

forall,foreach
相关推荐
AI视觉网奇14 分钟前
动作识别 视频理解大模型
开发语言·python·音视频
SomeB1oody41 分钟前
【RustyML入门】3.8. 正则化与归一化层
开发语言·后端·机器学习·rust·教程
__zRainy__44 分钟前
Node系列 · Node基础:全局变量与全局对象
开发语言·前端·javascript
peijiping1 小时前
Agent 工具执行:并行(parallel_tool_calls)和后台(run_in_background)到底有什么区别? (学习笔记)
笔记·学习·ai agent·claude code
何事误红尘1 小时前
KF32A学习笔记(二):IDE基本使用、srec和hex格式、FreeRTOS移植
学习
鬼手点金1 小时前
Scrapy + Playwright 完整示例(JS 动态渲染网页)
开发语言·javascript·爬虫·python·scrapy·html·json
Mr. zhihao1 小时前
深度解析:为什么Java序列化需要搭配ByteArrayOutputStream?IO装饰器模式的精妙设计
java·开发语言·装饰器模式
IT古董2 小时前
【MES学习笔记系列】MES 推荐书籍与资源
笔记·学习
迪丽热爱2 小时前
每日英语-11
学习
格林威2 小时前
多相机并行采图最佳实践:Task.WhenAll + 异常处理 + 资源释放
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·机器视觉