scala 集合总结(Seq、Map、Set、List、Tuple、Option)

Scala集合框架包括不可变集合和可变集合,如immutable的List和mutable的ArrayBuffer。Seq是有序集合的接口,List是不可变链表实现,Vector是高效索引的不可变集合。在选择Seq子类时,Vector适合随机访问和更新,而List适用于线性操作和函数式编程。Map和Set都有可变和不可变版本,Tuple和Option也是重要的集合类型。

https://docs.scala-lang.org/scala3/book/collections-classes.html
https://docs.scala-lang.org/overviews/collections-2.13/overview.html

scala 集合的三大类型

从较高的层次来看 Scala 集合,主要有以下三个类别可供选择:

  • Sequences是元素的顺序集合,可以是索引的(如数组)或线性的(如链表)
  • Maps包含键/值对的集合,类似于Java的Map、Python的dict
  • Sets是唯一元素的无序集合

所有这些都是基本类型,并且具有用于特定目的的子类型,例如并发、缓存和流式处理。除了这三个主要类别之外,还有其他有用的集合类型,包括ranges, stacks, queues。

下图显示了scala.collection包中的集合类型。这些都是高级抽象类或特征,通常具有不可变和可变的实现。

在这里插入图片描述

scala.collection.immutable(不可变集合)

scala.collection.immutable包中的集合保证对每个人都是不可变的。这样的集合在创建后就永远不会改变。因此,您可以相信在不同时间点重复访问相同集合值将始终产生具有相同元素的集合这一事实。

下图显示包scala.collection.immutable中的所有集合:

在这里插入图片描述

scala.collection.mutable(可变集合)

scala.collection.mutable包中的集合具有一些更改集合的操作。因此,处理可变集合意味着您需要了解哪些代码在何时更改了哪个集合。

下图显示包scala.collection.mutable中的所有集合:

在这里插入图片描述

默认情况下,Scala 总是选择不可变集合。例如,如果只是编写Set而没有任何前缀或没有 Set从某处导入,将获得一个不可变集,如果编写 Iterable将获得一个不可变的可迭代集合,因为这些是从scala包中导入的默认绑定。

常用集合总结

集合类型 不变的 可变的 描述
List 线性(链表)、不可变序列。List[T] 是类型 T 的链表。
Vector 一个索引的、不可变的序列。
LazyList 惰性不可变链表,其元素仅在需要时才计算;适用于大型或无限序列。
ArrayBuffer 可变索引序列的首选类型。
ListBuffer 当你想要一个可变的List;通常转换为List
Map 由成对的键和值组成的可迭代集合。可通过键检索值。
Set 没有重复元素的可迭代集合。Set中元素类型相同。

如上所示,MapSet有不可变和可变版本。

ListVectorLazyListArrayBufferListBuffer<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nefu-ljw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值