Scala集合习题Ⅰ

news/2024/5/6 2:51:49/文章来源:https://blog.csdn.net/weixin_53046747/article/details/128089916

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

目录

练习题 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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_228482.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光栅莫尔信号四倍频细分电路模块的设计与仿真研究

笔者电子信息专业硕士毕业&#xff0c;获得过多次电子设计大赛、大学生智能车、数学建模国奖&#xff0c;现就职于南京某半导体芯片公司&#xff0c;从事硬件研发&#xff0c;电路设计研究。对于学电子的小伙伴&#xff0c;深知入门的不易&#xff0c;特开次博客交流分享经验&a…

Google单元测试框架gtest之官方sample笔记3--值参数化测试

1.7 sample7--接口测试 值参数不限定类型&#xff0c;也可以是类的引用&#xff0c;这就可以实现对类接口的测试&#xff0c;一个基类可以有多个继承类&#xff0c;那么可以测试不同的子类功能&#xff0c;但是只需要写一个测试用例&#xff0c;然后使用参数列表实现对每个子类…

天宇优配|GDR海外发行热情高 资本市场互联互通提速

圆桌评论&#xff1a;“对话交易所——上海&#xff0c;为中欧互联互通提速” “2022上海全球资产管理高峰论坛”11月29日在上海举办。在题为“对话交易所——上海&#xff0c;为中欧互联互通提速”的圆桌评论环节&#xff0c;来自全球各大证券交易所、证券公司、上市公司的多…

https加密解密过程二、名词解析及文件生成

https加密解密过程二、名词解析及文件生成 密钥仓库keystore文件 Keytool是一个Java数据证书的管理工具 &#xff0c;Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中 keystore文件的内容其实就是把私钥、公钥以及公钥对应的地址等信息输出为json格式的…

[附源码]Python计算机毕业设计Django二手书店设计论文

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

13.前端笔记-CSS-盒子样式应用(圆角、阴影)

1、圆角边框 border-radius属性&#xff0c;用于设置元素的外边框圆角 原理&#xff1a;(椭)圆和矩形的两条边相切&#xff08;圆的半径就是length&#xff09;&#xff0c;形成圆角效果 属性&#xff1a; border-top-left-radius;左上 border-top-right-radius:右上 border…

一起学时序分析之建立/保持时间裕量

何为裕量&#xff1f; 裕量&#xff0c;英文名称叫做“Slack”。我们在Vivado实现后的报告中常常能看到这样一栏&#xff1a; 因为都是缩写&#xff0c;所以我们来解释一下前四栏的含义&#xff1a; WNS&#xff0c;即Worst Negative Slack&#xff0c;最差负时序裕量。这个表…

(四) 共享模型之管程【Monitor 概念】

一、Java 对象头&#xff08;P75&#xff09; 二、原理之 Monitor(锁) Monitor 被翻译为监视器或管程。 每个 Java 对象都可以关联一个 Monitor 对象&#xff0c;如果使用 synchronized 给对象上锁&#xff08;重量级&#xff09;之后&#xff0c;该对象头的 Mark Word 中就被设…

基于改进萤火虫算法的图像分割的应用(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

【信管2.4】项目运行环境与项目经理

项目运行环境与项目经理加餐加餐来了哦&#xff0c;今天的内容在 《信息系统项目管理师教程》 这本教材里是没有的&#xff0c;而且在 PMBOK 第五版中也是没有的。这部分内容是 PMBOK 第六版中新加的两个独立章节&#xff0c;不过内容不多&#xff0c;非常轻松&#xff0c;重点…

01 - 进阶操作系统(BIOS)

---- 整理自狄泰软件唐佐林老师课程 1. BIOS - Base input & Output system BIOS是上电后第一个运行的程序 BIOS首先检测硬件状态&#xff0c;检测通过后立即进行硬件初始化工作 BIOS会在内存中建立中断向量表&#xff08;提供硬件访问的方法&#xff09; BIOS最后将控制…

[附源码]计算机毕业设计JAVA校园飞毛腿系统

[附源码]计算机毕业设计JAVA校园飞毛腿系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis …

前后端分离项目的https加密解密过程二、名词解析及文件生成

前后端分离项目的https加密解密过程二、名词解析及文件生成 密钥仓库keystore文件 Keytool是一个Java数据证书的管理工具 &#xff0c;Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中 keystore文件的内容其实就是把私钥、公钥以及公钥对应的地址等信息…

【附源码】计算机毕业设计JAVA众筹平台网站

【附源码】计算机毕业设计JAVA众筹平台网站 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA mybati…

leetcode:1579. 保证图可完全遍历【并查集思路】

目录题目截图题目分析ac code总结题目截图 题目分析 从删除比较难&#xff0c;考虑增加增加的过程中无用的边就可以删除考虑alice和bob各自的联通分量最后希望都是1&#xff0c;一开始都是n如果将两个独立的联通分量连起来了&#xff0c;那么连通分量个数减1这里很明显就是用并…

Kafka集群环境搭建及基本使用

前提条件 操作系统&#xff1a;CentOS7服务器&#xff1a;3台Java环境&#xff1a;JDK1.8。安装教程参考JDK1.8安装Zookeeper环境 搭建教程参考Zookeeper集群环境搭建及使用Kafka基础知识参考Kafka角色及功能概览 搭建步骤 下载 执行下载命令wget https://archive.apache.o…

全程软件自动化测试

软件自动化测试的概念 “什么是软件自动化测试&#xff1f;”也许很多人的回答是&#xff1a;“使用自动化测试工具或者编写自动化脚本来自动化测试软件”&#xff0c;还有一些权威网站&#xff0c;比如 WikiPedia 是这样定义的&#xff1a; “在软件测试中&#xff0c;自动化…

(三) 共享模型之管程【共享带来的问题】

一、共享带来的问题 1. 临界区 &#xff08;1&#xff09;一个程序运行多个线程本身是没有问题的 &#xff08;2&#xff09;问题出在多个线程访问共享资源 1️⃣多个线程读共享资源其实也没有问题 2️⃣在多个线程对共享资源读写操作时发送指令交错&#xff0c;就会出现问题 …

清朝盛衰的六个时间点!

清朝盛衰的整个过程经历了六个时间节点&#xff1a; 一六六一年﹙顺治十八年﹚是第一个时间节点。 正月初六夜半时分&#xff0c;顺治帝预感生命垂危&#xff0c;急命太监传呼麻勒吉与王熙两人赶赴养心殿。帝对王熙说&#xff1a;“朕出痘&#xff0c;势将不起&#xff0c;尔…

三、【react-redux】数据共享

文章目录1、优化项目结构2、添加一个新容器组件2.1、新项目结构2.2、CODE2.2.1、reduc/constant.js2.2.2、redux/actions/person.js2.2.3、redux/reducers/person.js2.2.4、redux/store.js2.2.5、Count.jsx2.2.6、Person.jsx2.3、Result3、总结本示例修改自 上一章 求和Demo 1、…