熟话说的好:”纸上得来终觉浅,绝知此事要躬行“,所以现在我就以下的习题,来巩固 之前我学习的几个常见集合函数,加深理解。

目录

练习题 1:计算分组后的list 分别对应的长度,和累加值

练习题 2: 实现 wordcount


练习题 1:计算分组后的list 分别对应的长度,和累加值

List(("a", 10), ("b", 2), ("a", 3))

OUT===>

Map(b -> (2,5), a -> (2,13))

解释:a的长度为2。b的长度为1。 a的累加值为13,b的累加值为2

import scala.collection.mutable.ListBuffer/*** @author:码到成龚* my motoo:"听闻少年二字,应与平庸相斥。"*/
object Test1_1 {def main(args: Array[String]) {// 本例代码中的变量命名:①无嵌套的数据结构:只使用单个单词②嵌套的数据结构:被嵌套的数据结构_嵌套的数据结构// 接收结果的变量命名:①包含的元素1_包含的元素2_变量类型_表达式中使用到的函数// 调用函数时的注释:①数据调用第一个函数输出的结果为OUT①,调用第二个函数的结果为OUT②....以此类推println("="*20+"初始的两个map集合"+"="*22)val tup2_list=List(("a",10),("b",2),("a",3),("b",3))val tup2_map_gb_mp=tup2_list.groupBy(f=>f._1).mapValues(list=>list.size)/*** OUT①Map(a-> ListBuffer(("a",10),("a",3)),b -> ("b",2))* OUT②Map(b -> 1, a -> 2)*/println(tup2_map_gb_mp)val tup2_map_gb_mp_rd_mp=tup2_list.groupBy(f=>f._1).mapValues(list=>list.reduce((a,b)=>("sum",a._2+b._2))).mapValues(f=>f._2)/*** OUT①Map(b -> ("b",2),a-> ListBuffer(("a",10),("a",3)))* OUT②Map(b -> ("b",2),* a-> ("sum",13))* OUT③Map(b -> 2,a-> 13)*/println(tup2_map_gb_mp_rd_mp)println("="*22+"取出值与和组成元组(方法一)"+"="*22)val string_int_map=tup2_list.groupBy(f=>f._1).mapValues(key=>(key.size,key.map(f=>f._2).sum)   //  将原value的长度与其和组成元组,组成新的map集合的value)/***OUT①:groupBy=>   Map(b -> ("b",2),a-> ListBuffer(("a",10),("a",3)))*OUT①:mapValues=> Map(b -> (2,5), a -> (2,13))*/println(string_int_map)

练习题 2: 实现 wordcount

List("a b a a c d", "a d e s")

实现统计单词的个数

1 按照单词自然顺序升序

2 按照单词个数从大到小排序

OUT===>

====================按照字母从小到大排序====================
(a,4)
(b,1)
(c,1)
(d,2)
(e,1)
(s,1)
====================按照字母个数从大到小排序====================
(a,4)
(d,2)
(e,1)
(s,1)
(b,1)
(c,1)

import scala.collection.mutable.{ArrayBuffer, ListBuffer}/*** @author:码到成龚* my motoo:"听闻少年二字,应与平庸相斥。"* 个人代码规范:*  1,原始数据的变量命名:①只使用单个单词即数据的类型:无嵌套的数据结构②被嵌套的数据结构类型_嵌套的数据结构类型:嵌套的数据结构*  2,接收结果的变量命名:①包含的数据类型1_包含的数据类型2_返回的变量类型_表达式中使用到的函数1_表达式中使用到的函数2*  3,调用函数时的注释:①数据调用第一个函数输出的结果为:函数名-OUT①;函数名-OUT②....以此类推**/
object Test2 {def main(args: Array[String]): Unit = {/*** 实现 wordcountList("a b a a c d", "a d e s")实现统计单词的个数1 按照单词自然顺序升序2 按照单词个数从大到小排序
OUT===>*/val string_list=List("a b a a c d", "a d e s").flatMap(f=>f.split(" "))  // flatmap直接将集合序列压平// 上面传入的参数f代表每一个字符串,使用split切割得到的为Array数组var tup2_arr=ArrayBuffer[(String,Int)]()  // 可变数组val list_map_gb_mp_gb_mv=string_list.map(key=>(key,1)).groupBy(tup=>tup._1).mapValues(key=>key.size)   /**map-OUT①:List((a,1), (b,1), (a,1), (a,1), (c,1), (d,1), (a,1), (d,1), (e,1), (s,1))groupBy-OUT②:Map(e -> List((e,1)), s -> List((s,1)), a -> List((a,1), (a,1), (a,1), (a,1)), b -> List((b,1)), c -> List((c,1)), d -> List((d,1), (d,1)))mapValues-OUT③:Map(e -> 1, s -> 1, a -> 4, b -> 1, c -> 1, d -> 2)*/for(i <- list_map_gb_mp_gb_mv.keys){tup2_arr.append((i,list_map_gb_mp_gb_mv(i)))}// array-OUT:ArrayBuffer((e,1), (s,1), (a,4), (b,1), (c,1), (d,2))println("="*20+"按照字母从小到大排序"+"="*20)(tup2_arr.sortWith((a,b)=>a._1<b._1   // 按照字母从小到大排序,即自然升序,也可以使用sorted函数)).foreach(println)// sortWith-OUT:ArrayBuffer((s,1), (e,1), (d,2), (c,1), (b,1), (a,4))/** foreach-OUT:*  (a,4)(b,1)(c,1)(d,2)(e,1)(s,1)*/println("="*20+"按照字母个数从大到小排序"+"="*20)(tup2_arr.sortWith((a,b)=>a._2>b._2   // 按照字母个数从大到小排序)).foreach(println)//sortWith-OUT:ArrayBuffer((a,4), (d,2), (e,1), (s,1), (b,1), (c,1))/** foreach-OUT:*              (a,4)(d,2)(e,1)(s,1)(b,1)(c,1)*/}
}

如果对以上的代码有任何问题的,请在评论区留言。

如果觉得代码有更优的解,也欢迎在评论区展示您的代码。

有兴趣可以继续阅读:Scala集合习题Ⅱ_码到成龚的博客-CSDN博客

Scala集合习题Ⅰ相关推荐

  1. Scala函数式编程(三) scala集合和函数

    前情提要: scala函数式编程(二) scala基础语法介绍 scala函数式编程(二) scala基础语法介绍 前面已经稍微介绍了scala的常用语法以及面向对象的一些简要知识,这次是补充上一章的 ...

  2. Scala集合实现WordCount代码实现

    实现思路分析 代码实现 package com.zxl.chapter10/*** 使用scala集合实现WordCount*/ object Scala09_WordCount {def main( ...

  3. scala to java_Scala 2.13 以后Java集合与Scala集合互相转换

    原来需要Java集合和Scala集合类型互换时引入import scala.collection.JavaConverters._1 即可,但在Scala 2.13版本中JavaConverter已经 ...

  4. scala集合转java_Java,Scala,Guava和Trove集合-它们可以容纳多少数据?

    scala集合转java 关于我们的数据结构的一个有趣的事情是,即使我们非常熟悉它们,但对于我们来说,仍然很难说出像HashMap这样基本的东西在1GB的内存中可以容纳多少个项目. 我们可能会在学校, ...

  5. scala集合中添加元素_如何在Scala中获得列表的第一个元素?

    scala集合中添加元素 清单 (List) A list is a linear data structure. It is a collection of elements of the same ...

  6. scala集合中添加元素_如何在Scala中将元素添加到列表中?

    scala集合中添加元素 In Scala, lists are immutable data structures in which adding new elements is not allow ...

  7. Scala 集合 —— Array、Map、Seq、Set

    until vs to until 不包括右端点: to 包括右端点: 格式化输出 val i = 100 val s = "hello world" println(f" ...

  8. scala集合层次图

    scala集合层次图

  9. 【Scala 教程】Scala 集合类型

    作者:梦家 个人站点:dreamhomes.top 公众号:DreamHub Scala Collection Scala提供了一套很好的集合实现,提供了一些集合类型的抽象. Scala 集合分为可变 ...

最新文章

  1. 静态局部变量和全局变量的区别!
  2. QT关于资源文件的添加使用
  3. mysql数据加百分号_使用MySQL SELECT语句时,在每个值的末尾添加一个百分号(%)...
  4. 使用java实现持续移动的小球
  5. 4th, Jan 2012 食物中毒惊魂
  6. python语言与c语言相比在分支结构上有什么不同_C语言顺序结构和分支结构总结...
  7. Docker docker-compose 配置lnmp开发环境
  8. Cisco ASA 5505 (Version 9.X)的 LAN上网和NAT的配置
  9. 手机WAPI功能检测常见问题分析(系列连载二):证书鉴别功能
  10. 【论文翻译 arXiv 2020】异质网表示学习综述-韩家炜组
  11. 浅谈人机关系在生活中的应用
  12. fedora14 安装
  13. 拆解ONES,从ONES深挖项目研发管理机制
  14. XXljob 使用教程(springboot)
  15. docker(十一):网络命名空间
  16. 硬核小学生:玩自己写的游戏,未来想造机器人
  17. JIR、进程池和线程池
  18. Jenkins+tomcat安装笔记
  19. 盘点:大多数电商运营都会犯的5大错误
  20. PC-DMIS 2017 基础教程

热门文章

  1. ASP.NET MVC 小区物业费管理平台
  2. GGEBiplotGUI软件包如何安装?
  3. 亚马逊关键词上首页的方法有哪些?
  4. 10个半径为1的圆两两相切,形成类似圆环的大圆,求该圆环内内切圆的半径,用python代码给出...
  5. 深度解析JVM内存模型
  6. kali 2022.4 E: 无法定位软件包 XXX
  7. 车辆调度 matlab,基于遗传算法的车辆调度问题的matlab源程序
  8. 24届河南理工大学计算机考研分析
  9. vcs破解和问题解决
  10. Visual Basic编程语言