过滤数字,并且将每个值乘以 3
val list1: List[Any] = List(30, "aa", 70, false, 10, 20)
// 得到新的集合, 新的集合只有整数的平方
// 1. 先过滤出来数字
// 2. 对数字做map (对数据结构调整)
val list2 = list1.filter(_.isInstanceOf[Int]) //过滤掉除了int类型的其它类型的
.map(_.asInstanceOf[Int]) //给值转成int类型的
.map(x => x * x) // 将每个值乘以3
println(list2) // 输出: List(900, 4900, 100, 400)
统计单词的数量
准备txt文档数据:
zjj zjj2
aaa ccc
bbb
ddd
zzz
sss
zjj
aaa
aaa
案例代码:
// 读取一个文件的内容, 统计这个文件中,每个单词出现的次数
val path = """D:\Downloads\ceui.txt"""
// 1. 读文件内容, 放入到集合中 文件中的每一行
val lines = Source.fromFile(path, "utf-8").getLines().toList
// 2. 切割单词 使用非单词字符
val words = lines.flatMap(_.split("\\W+"))
// 3. 把相同的单词分组
val wordGrouped = words.groupBy(w => w)
// 4. 进行map, 计算每个单词的个数
val wordCount = wordGrouped.mapValues(_.size)
// 按照单词的数量降序, 取top3
val result = wordCount.toList.sortBy(_._2)(Ordering.Int.reverse).take(3)
println(result) // 输出: List((aaa,3), (zjj,2), (zjj2,1))