scala中集合操作实战 头歌
时间: 2025-03-11 19:27:26 浏览: 41
### Scala集合操作实战示例
在Scala中,集合是一组对象的容器,提供了丰富的API来进行各种数据处理操作。下面通过几个实际应用场景展示如何利用Scala的强大集合功能。
#### 场景一:过滤列表中的偶数并求和
假设有一个整型列表,需求是从该列表里筛选出所有的偶数并将这些数值相加得到总和:
```scala
val numbers = List(1, 2, 3, 4, 5, 6)
// 使用filter方法获取偶数再用sum计算其合计值
val sumOfEvens = numbers.filter(_ % 2 == 0).sum
println(sumOfEvens) // 输出: 12
```
此代码片段展示了`List`类型的简单运用以及链式调用特性[^1]。
#### 场景二:转换字符串数组为大写形式
给定一组由不同大小写字母组成的单词构成的数组,目标是将其全部转化为全大写的版本存储在一个新的列表当中:
```scala
val words = Array("hello", "world")
// map函数遍历每一个元素执行指定逻辑后返回新序列
val upperCaseWords = words.map(_.toUpperCase())
upperCaseWords.foreach(println)
/* 输出:
HELLO
WORLD */
```
这里体现了`Array`类型配合高阶函数`map()`实现批量修改的功能[^2]。
#### 场景三:查找最大年龄的人的信息
考虑存在一个人物信息记录表(即包含姓名与年纪两个字段的对象),现在要找出其中最年长者是谁及其具体岁数:
```scala
case class Person(name: String, age: Int)
val people = Seq(
Person("Alice", 30),
Person("Bob", 25),
Person("Charlie", 35))
// reduceLeft找到满足条件的最大项
val oldestPerson = people.reduceLeft((p1, p2) => if (p1.age > p2.age) p1 else p2)
println(s"The oldest person is ${oldestPerson.name} who is ${oldestPerson.age} years old.")
// 输出:The oldest person is Charlie who is 35 years old.
```
上述例子说明了不可变序列`Seq`搭配模式匹配表达式的强大之处[^3]。
#### 场景四:统计字符频率分布情况
对于一段文本而言,有时会关心各个字母出现次数的比例关系,这可以通过创建一个映射来完成:
```scala
def charFrequency(str: String): Map[Char, Int] =
str.toLowerCase().replaceAll("[^a-z]", "")
.groupBy(identity)
.view
.mapValues(_.length)
.toMap
val frequency = charFrequency("Hello World!")
frequency foreach { case (k,v) => println(f"$k -> $v") }
/*
h -> 1
e -> 1
l -> 3
o -> 2
w -> 1
r -> 1
d -> 1
*/
```
这段程序演示了字符串处理技巧加上`Map`结构的应用方式[^4]。
阅读全文
相关推荐


















