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

Scala—Collections集合概述

Scala

在这里插入图片描述

Scala-集合概述

  • Scala
  • Scala集合概述
    • 1 不可变集合(Immutable Collections)
    • 2 可变集合(Mutable Collections)
    • 3 Scala 集合类的层次结构


Scala集合概述

在 Scala 中,集合主要分为两大类:可变集合(Mutable Collections)和不可变集合(Immutable Collections)。
在这里插入图片描述


1 不可变集合(Immutable Collections)

不可变集合是指该集合对象不可修改,每次修改操作都会返回一个新对象,而不会对原对象进行修改。类似于 Java 中的 String 对象。

在这里插入图片描述

  • 不可变集合是 Scala 中的默认集合类型,位于 scala.collection.immutable 包中

  • 不可变集合在创建后不能被修改。任何修改操作都会返回一个新的集合,而原来的集合保持不变。

  • 常用不可变集合ListVectorSetMap,一旦创建不能修改,所有修改操作返回新集合,适合多线程环境和函数式编程。


2 可变集合(Mutable Collections)

可变集合是指可以直接对原对象进行修改,而不会返回新的对象。类似于 Java 中的 StringBuilder 对象。
在这里插入图片描述

  • 可变集合可以在原地更新或扩展,可以添加、更改或移除集合中的元素。

  • 集合提供了可以直接修改集合的操作。所有的可变集合类都位于 scala.collection.mutable 包中。

  • 常用可变集合ArrayBufferListBufferHashSetHashMap,可以在创建后进行修改,适合需要频繁修改的场景。


3 Scala 集合类的层次结构

Scala 为几乎所有的集合类提供了可变和不可变的版本。

immutable:

不可变集合:scala.collection.immutable
在这里插入图片描述

mutable:

可变集合:scala.collection.mutable
在这里插入图片描述


Iterable 特质是 Scala 集合类层次结构的顶层特质,定义了许多集合操作的基础行为。

在这里插入图片描述

  • 作用:返回一个迭代器对象,可以用来逐个访问集合中的元素。
  • 特点:这是一个抽象方法,具体的集合类需要实现这个方法。

Scala 所有的集合类都扩展自 Iterable 特质。Iterable 特质定义了 iterator 方法,所有其他方法都是基于这个方法实现的。

方法名方法签名描述
foreachdef foreach[U](f: A => U): Unit对集合中的每个元素应用一个函数 f
mapdef map[B](f: A => B): Iterable[B]对集合中的每个元素应用一个函数 f,并返回一个新的集合。
flatMapdef flatMap[B](f: A => Iterable[B]): Iterable[B]对集合中的每个元素应用一个函数 f,并将结果展平为一个单一的集合。
filterdef filter(p: A => Boolean): Iterable[A]筛选出满足条件 p 的元素,并返回一个新的集合。
existsdef exists(p: A => Boolean): Boolean检查集合中是否存在满足条件 p 的元素。
foralldef forall(p: A => Boolean): Boolean检查集合中的所有元素是否都满足条件 p
sizedef size: Int返回集合中元素的数量。
isEmptydef isEmpty: Boolean检查集合是否为空。
nonEmptydef nonEmpty: Boolean检查集合是否非空。
headdef head: A返回集合的第一个元素。如果集合为空,抛出 NoSuchElementException
lastdef last: A返回集合的最后一个元素。如果集合为空,抛出 NoSuchElementException
taildef tail: Iterable[A]返回去掉第一个元素后的集合。如果集合为空,抛出 UnsupportedOperationException
initdef init: Iterable[A]返回去掉最后一个元素后的集合。如果集合为空,抛出 UnsupportedOperationException
takedef take(n: Int): Iterable[A]返回集合的前 n 个元素。
dropdef drop(n: Int): Iterable[A]返回去掉前 n 个元素后的集合。
takeWhiledef takeWhile(p: A => Boolean): Iterable[A]返回集合中满足条件 p 的最长前缀。
dropWhiledef dropWhile(p: A => Boolean): Iterable[A]返回去掉满足条件 p 的最长前缀后的集合。
foldLeftdef foldLeft[B](z: B)(op: (B, A) => B): B从左到右将集合中的元素聚合为一个值。
foldRightdef foldRight[B](z: B)(op: (A, B) => B): B从右到左将集合中的元素聚合为一个值。
reduceLeftdef reduceLeft[B >: A](op: (B, A) => B): B从左到右将集合中的元素聚合为一个值,初始值为集合的第一个元素。
reduceRightdef reduceRight[B >: A](op: (A, B) => B): B从右到左将集合中的元素聚合为一个值,初始值为集合的最后一个元素。
mindef min(implicit ord: Ordering[A]): A返回集合中的最小元素。
maxdef max(implicit ord: Ordering[A]): A返回集合中的最大元素。
sumdef sum(implicit num: Numeric[A]): A返回集合中所有元素的和。
productdef product(implicit num: Numeric[A]): A返回集合中所有元素的乘积。
toListdef toList: List[A]将集合转换为 List
toSeqdef toSeq: Seq[A]将集合转换为 Seq
toArraydef toArray: Array[A]将集合转换为 Array
toSetdef toSet: Set[A]将集合转换为 Set
toMapdef toMap[K, V](implicit ev: A <:< (K, V)): Map[K, V]将集合转换为 Map,要求集合中的元素是键值对。

由于篇幅问题,大家先对Scala中的集合有一个系统的概念,后续各个集合的具体使用会持续更新。

整理不易,列位多多支持谢谢啦🤣🤣🤣


http://www.kler.cn/a/411048.html

相关文章:

  • 大语言模型LLM的微调代码详解
  • 【前端】ES6基础
  • 滑动窗口最大值(java)
  • TCP快速重传机制为啥出现重复ACK?
  • ‌Kotlin中的?.和!!主要区别
  • Taro React小程序开发框架 总结
  • goframe框架bug-记录
  • 如何提升编程能力第二篇
  • 关于网络安全攻防知识
  • [CA] 读懂core.cpp -3 Core::decode
  • docker 的各种操作
  • 防御网络攻击的创新策略
  • IP反向追踪技术,了解一下?
  • vim 如何高亮/取消高亮
  • MySQL系列之数据类型(Numeric)
  • 【计算机网络】C/C++实现解析Wireshark离线数据包,附源码
  • Java基础.数组排序(冒泡排序和选择排序)数组与遍历
  • JavaScript HTML DOM 实例
  • windowsC#-在异步任务完成时处理
  • wangEditor富文本插入自定义应用
  • 大厂也在用的分布式链路追踪:TraceIdFilter + MDC + Skywalking
  • DAPP分币系统开发的安全性分析
  • C++中的链式操作原理与应用(一)
  • 学习日记_20241126_聚类方法(自组织映射Self-Organizing Maps, SOM)
  • 如何使用GCC手动编译stm32程序
  • 计算机的错误计算(一百六十七)