Scala集合习题001

news/2024/5/3 19:04:50/文章来源: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===>

ArrayBuffer((a,4), (b,1),(c,1), (d,2), (e,1),(s,1) )
ArrayBuffer((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(tup2_arr.sortWith((a,b)=>a._1<b._1   // 按照字母从小到大排序,即自然升序,也可以使用sorted函数))// sortWith-OUT:ArrayBuffer((s,1), (e,1), (d,2), (c,1), (b,1), (a,4))println(tup2_arr.sortWith((a,b)=>a._2>b._2   // 按照字母个数从大到小排序))}
}

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

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

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

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

相关文章

eMagin:当月产百万片时,4K MicroOLED成本将不是问题

在今年2022 SID显示周期间&#xff0c;Micro OLED微显示模组厂商eMagin曾展示一款专为超短焦VR头显开发的4K Micro OLED微显示屏&#xff0c;有趣的是&#xff0c;该显示屏连接的主板上印有STEAMBOAT字样&#xff0c;让人不禁怀疑它与Valve之间是否存在某种联系。甚至有猜测认为…

Vue 3的高颜值UI组件库

Vue 3.0 已经发布两年多的时间&#xff0c;今年 2 月 Vue 3.0 也正式成为新的默认版本。今天就来分享 7 个适用于 Vue 3 的高颜值 UI 组件库&#xff01; Element Plus Element Plus 是一套由饿了么开源出品的为开发者、设计师和产品经理准备的基于 Vue 3.0 的组件库。Elemen…

xcode swift 单元测试 test

XCTest是苹果官方的测试框架&#xff0c;是基于OCUnit的传统测试框架&#xff0c;测试编写起来非常简单。 测试案例一 创建一个单元测试 func testExample() throws {let personID:String "0123456789"let count personID.countXCTAssert(count < 10, "I…

分布式文件系统

0.0 分布式文件系统 一般做法&#xff1a; 传统的模式是我们通过tomcat或者nginx&#xff0c;存放静态资源文件。 存在的问题&#xff1a; 单个节点会出现存不下的情况&#xff0c;需要多个节点。 分布式文件系统 需要一个系统来管理多个计算机节点上的文件数据&#xff…

[附源码]计算机毕业设计springboot基于web的建设科技项目申报管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

word 中添加图片目录、内部链接

目录1. 图片、表格添加目录1.1 插入题注1.2 添加目录2. 添加内部链接1. 图片、表格添加目录 1.1 插入题注 只有正确地插入题注&#xff0c;图表目录才能快速生成。 &#xff08;1&#xff09;两个方法调用“题注”功能&#xff08;任选1个&#xff09; 方法一&#xff1a;在菜…

[附源码]SSM计算机毕业设计医院挂号系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Oracle表空间详细介绍

表空间概述 Oracle的表空间属于Oracle中的存储结构&#xff0c;是一种用于存储数据库对象(如&#xff1a;数据文件)的逻辑空间&#xff0c;是Oracle中信息存储的最大逻辑单元&#xff0c;其下还包含有段、区、数据块等逻辑数据类型。表空间是在数据库中开辟的一个空间&#xf…

Cpp知识点系列-字符串

前言 记录一些对字符串的理解。 接下来我所说的都是依赖于头文件<string>的。 理论 什么是字符串 字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此&#xff0c;一个以 null 结尾的字符串&#xff0c;包含了组成字符串的字符。 string与cstring有什么区别…

Linux多线程C++版(七) 线程互斥方式-----读写锁

目录1.读写锁基本概念2.读写锁创建和销毁3.读写锁的加锁和解锁4.代码了解读写锁5.线程互斥案例---ATM取钱--使用读写锁1.读写锁基本概念 线程使用互斥锁缺乏读并发性当读操作比较多&#xff0c;写操作比较少时&#xff0c;可使用读写锁提高线程读并发性读写锁数据类型 pthread…

专访D-Wave CEO:量子计算的过去、现在和未来

&#xff08;图片来源&#xff1a;网络&#xff09; 量子计算可能成为一项颠覆性技术&#xff1a;它建立在听起来非常奇特的物理学基础上&#xff0c;并有望以前所未有的速度和效率解决某些类别的问题。一些人认为&#xff0c;目前在量子计算领域的承诺太多&#xff0c;交付却不…

FPGA书籍

1、Xilinx FPGA 权威设计指南 本书系统地介绍了Xilinx新一代集成开发环境Vivado 2018的设计方法、设计流程和具体实现。 全书共11章&#xff0c;内容包括Xilinx新一代UltraScale结构、Vivado集成设计环境导论、Vivado工程模式基本设计实现、Vivado非工程模式基本设计实现、创建…

Linux centos7.6 安装elasticsearch8.x (es8) 教程

系列-Linux centos7.6 安装elasticsearch8.x (es8) 教程 Linux centos7.6 安装elasticsearch8.x (es8) 教程_言之有李LAX的博客-CSDN博客 系列-linux安装elasticsearch-head &#xff08;es可视化界面&#xff09; linux安装elasticsearch-head &#xff08;es可视化界面&am…

Elasticsearch倒排索引

什么是正排索引&#xff1f; 如下图&#xff0c;有一张商品表&#xff08;tb_goods&#xff09;&#xff1a; 对于mysql数据库来说&#xff0c;肯定会给“id”创建主键索引&#xff0c;然后根据“id”来查询对应的商品信息&#xff0c;而这种情况就被称为“正排索引” 现在有…

吴恩达2022机器学习——第二部分高级学习算法第三周笔记

目录1.1决定下一步做什么&#xff08;构建机器学习的实用建议&#xff09;1.2模型评估1.3模型选择&交叉验证测试集的训练方法模型选择总结举例2.1通过偏差与方法进行诊断2.2正则化、偏差、方差1.1决定下一步做什么&#xff08;构建机器学习的实用建议&#xff09; 从一个例…

[附源码]计算机毕业设计springboot健身房信息管理

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

传统制造企业进行数字化转型,是翻身还是翻船?

数实融合正在从可选项&#xff0c;变成每个行业都要面对的必选项&#xff0c;制造企业也从野蛮生长逐渐步入有序的数字化世界。 出品|产业家 2022年&#xff0c;疫情及经济环境全面淬炼了各行各业&#xff0c;大多数能有效应用数字化持续经营的企业成为幸存者&#xff0c;数字…

Microolap DAC for MySQL驱动程序或其他库

Microolap DAC for MySQL驱动程序或其他库 用于MySQL和Delphi/CBuilder(也称为MySQLDAC)的Microolap直接访问组件是一组Borland Delphi/CBuilder组件&#xff0c;允许直接连接到MySQL数据库服务器。DAC for MySQL允许您创建Delphi/CBuilder应用程序&#xff0c;无需BDE、ODBC或…

Caffeine 源码、架构、原理(史上最全,10W超级字长文)

文章很长&#xff0c;而且持续更新&#xff0c;建议收藏起来&#xff0c;慢慢读&#xff01;疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 &#xff1a; 免费赠送 :《尼恩Java面试宝典》 持续更新 史上最全 面试必备 2000页 面试必备 大厂必备 涨薪必备 免费赠送 经典…

NHS-PEG-Biotin,Biotin-PEG-NHS,活性酯peg生物素生物素PEG衍生物

Biotin-PEG-NHS&#xff08;NHS-PEG-Biotin&#xff09;是生物素PEG衍生物的一种&#xff0c;该化学试剂其中文名为活性酯-聚乙二醇-生物素&#xff0c;它所属分类为Biotin PEG NHS ester PEG。 peg试剂的分子量均可定制&#xff0c;有&#xff1a;活性酯-聚乙二醇2-生物素&am…