scala的集合性能2

发布于:2024-12-18 ⋅ 阅读:(105) ⋅ 点赞:(0)

可变集合\n可变集合允许在原地修改数据,适合需要频繁更新的场景。Scala 的可变集合包括 ArrayBuffer、HashSet和HashMap。

1. ArrayBuffer\nArrayBuffer 是一个可变的动态数组,提供高效的随机访问和添加操作。

import scala.collection.mutable.ArrayBuffer

// 创建ArrayBuffer

val buffer = ArrayBuffer(1, 2, 3, 4)

// 添加元素

buffer += 5

buffer ++= ArrayBuffer(6, 7)

// 删除元素

buffer -= 3

buffer --= ArrayBuffer(4, 5)

// 访问元素

val firstElement = buffer.head // 1

// 映射操作

val doubled = buffer.map(_ * 2) // ArrayBuffer(2, 4, 6, 12)

ArrayBuffer 提供了 +=、++=、-=、--= 等方法,用于动态修改集合内容。

2. HashSet\nHashSet 是一个基于哈希表的可变集合,提供常数时间的插入和查找操作。

import scala.collection.mutable.HashMap

// 创建HashMap

val map = HashMap("a" -> 1, "b" -> 2)

// 添加键值对

map += ("c" -> 3)

map ++= HashMap("d" -> 4, "e" -> 5)

// 删除键值对

map -= "a"

map --= List("b", "c")

// 更新值

map("d") = 6

// 映射操作

val updatedMap = map.map { case (k, v) => (k.toUpperCase, v * 2) } // HashMap(D -> 12, E -> 10)

HashMap 提供了 +=、++=、-=、--=、map 等方法,用于高效管理键值对。

四、集合操作的函数式编程\nScala 的集合框架深度集成了函数式编程的概念,提供了丰富的操作方法。以下是一些常用的函数式操作示例:

1. map\nmap 函数对集合中的每个元素应用给定的函数,返回一个新的集合。”

val numbers = List(1, 2, 3, 4)
val squared = numbers.map(x => x * x) // List(1, 4, 9, 16)

2. filter\nfilter 函数返回一个包含所有满足给定条件的元素的新集合。

val numbers = List(1, 2, 3, 4)

val even = numbers.filter(_ % 2 == 0) // List(2, 4)

3. flatMap\nflatMap 函数将集合中的每个元素映射到一个集合,然后将所有这些集合扁平化成一个集合。

val lists = List(List(1, 2), List(3, 4))

val flattened = lists.flatMap(identity) // List(1, 2, 3, 4)

4. foldLeft 和 foldRight\nfoldLeft 和 foldRight 函数通过将集合中的元素与一个累积器进行结合,生成一个最终结果。

val numbers = List(1, 2, 3, 4)

val sum = numbers.foldLeft(0)(_ + _) //

 10

val product = numbers.foldRight(1)(_ * _) // 24

5. reduceLeft 和 reduceRight

reduceLeft 和 reduceRight 函数类似于 foldLeft 和 foldRight,但它们不会提供初始值。

val numbers = List(1, 2, 3, 4)

val sum = numbers.reduceLeft(_ + _) // 10

val product = numbers.reduceRight(_ * _) // 24