第七章总结:集合

一、集合简介
Scala集合分为三大类:序列(Seq)、集(Set)、映射(Map),所有集合都扩展自Iterable特质。集合分为可变集合和不可变集合:
不可变集合:scala.collection.immutable
可变集合:scala.collection.mutable

二、数组

  1. 不可变数组
    定义:val arr = new ArrayInt(10)
    特点:长度固定,修改操作会返回新数组。
  1. 可变数组(ArrayBuffer)
    定义:val arr = ArrayBufferAny(3, 2, 5)
    特点:支持动态增删元素。
  1. 多维数组
    定义:val arr = Array.ofDimDouble(3, 4)

三、列表(List)

  1. 不可变List
    定义:val list = List(1, 2, 3)
    特点:元素有序、可重复,支持::操作符和扁平化操作。

  2. 可变ListBuffer
    定义:val buffer = ListBuffer(1, 2, 3)
    特点:支持动态增删元素。

四、Set集合

  1. 不可变Set
    定义:val set = Set(1, 2, 3)
    特点:元素无序、不可重复。
Scala 复制代码
def main(args: Array[String]): Unit = {

//(1)Set 默认是不可变集合,数据无序
val set = Set(1,2,3,4,5,6)

//(2)数据不可重复
val set1 = Set(1,2,3,4,5,6,3)

//(3)遍历集合for(x<-set1){ println(x)
}
}
}
  1. 可变Set
    定义:val set = mutable.Set(1, 2, 3)
    特点:支持动态增删元素。

五、Map集合

  1. 不可变Map
    定义:val map = Map("a" -> 1, "b" -> 2)

  2. 可变Map
    定义:val map = mutable.Map("a" -> 1, "b" -> 2)
    特点:支持动态增删键值对。

Scala 复制代码
object TestSet {

def main(args: Array[String]): Unit = {

//(1)创建可变集合
val map = mutable.Map( "a"->1, "b"->2, "c"->3 )

//(3)向集合增加数据map.+=("d"->4)

// 将数值 4 添加到集合,并把集合中原值 1 返回
val maybeInt: Option[Int] = map.put("a", 4) println(maybeInt.getOrElse(0))

//(4)删除数据map.-=("b", "c")

//(5)修改数据map.update("d",5) map("d") = 5

//(2)打印集合map.foreach((kv)=>{println(kv)})
}
}

六、元组
定义:val tuple = (1, "a", true)
特点:最多支持22个元素,可通过_1、_2访问元素。

Scala 复制代码
val person = ("John", 30, "Male")
println(person._1) // 输出: John
println(person._2) // 输出: 30

七、集合常用函数

  1. 基本操作
    length、size、foreach、mkString、contains

  2. 衍生集合
    head、tail、last、init、reverse、take、drop、union、intersect、diff、zip

  3. 计算函数
    sum、product、max、min、sorted、sortBy、sortWith

Scala 复制代码
object TestList {

def main(args: Array[String]): Unit = {

val list: List[Int] = List(1, 5, -3, 4, 2, -7, 6)

//(1)求和println(list.sum)
//(2)求乘积println(list.product)

//(3)最大值println(list.max)

//(4)最小值println(list.min)

//(5)排序
// (5.1)按照元素大小排序
println(list.sortBy(x => x))

// (5.2)按照元素的绝对值大小排序
println(list.sortBy(x => x.abs))

// (5.3)按元素大小升序排序
println(list.sortWith((x, y) => x < y))

// (5.4)按元素大小降序排序
println(list.sortWith((x, y) => x > y))
}
}
相关推荐
一个天蝎座 白勺 程序猿12 小时前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
天诰14 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
分布式存储与RustFS15 小时前
镜像仓库的层别堆本地盘:用 RustFS 给 Docker Registry 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
陈希12316 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
女神下凡17 小时前
芯参谋(95):嵌入式文件系统_开发指南
linux·服务器·arm开发·驱动开发·设计规范
@兽血沸腾17 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
艺杯羹17 小时前
Windows原生软件锁设计:从暴力杀进程丢数据到零轮询事件驱动架构
windows·系统架构·开源·开源软件·内存管理·开源协议
讯捷蓝达1 天前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
数字新视界1 天前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
爱和冰阔落1 天前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络