首页 > 其他分享 >Scala练习题

Scala练习题

时间:2024-03-24 18:59:34浏览次数:22  
标签:练习题 String val Scala list println Array def

1、定义一个高阶函数,按照指定的规则对集合里面的每个元素进行操作
比如: Array(“hh”,“red”,“java”,“hadoop”)
规则: 对集合中每个元素进行操作,得到集合每个元素的长度

package lj

object aaa {
    def main(args: Array[String]): Unit = {
      val list = Array("spark", "hello", "java", "hadoop")
      val fun = (s: String) => {
        s.length
      }
      println(doSome(list, fun))
      println(doSome(list, (s: String) => {
        s.length
      }))
      println(doSome(list,(s)=>s.length))
      println(doSome(list,s=>s.length))
      println(doSome(list,_.length))
    }

    def doSome(list: Array[String], fun: (String) => Int) = {
      val res = for (elem <- list) yield {
        fun(elem)
      }
      res.toList
    }
}

运行结果:


2、定义一个高阶函数,对数据中的元素按照指定的规则进行过滤
比如: Array(1,4,7,9,10,6,8,99,88,66)
规则: 只保留偶数数据

package lj

object aaa {
    def main(args: Array[String]): Unit = {
      val list = Array(1,4,7,9,10,6,8,99,88,66)
      println(filter(list,(_%2==0)))
    }

    def filter(list: Array[Int],fun:(Int)=>Boolean) = {
      //用fun做守卫,过滤
      val res = for (elem <- list if (fun(elem))) yield {
        elem
      }
      res.toList
    }
  }

运行结果:


3、对数据中的元素按照指定规则进行分组
比如:Array(“zhangsan shenzhen man”,“lisi beijing woman”,“zhaoliu beijing man”)
规则: 按照地址进行分组

object Test03 {
  def main(args: Array[String]): Unit = {
    val list = Array("zhangsan shenzhen man","lisi beijing woman","zhaoliu beijing man")
    println(group(list,_.split(" ")(2)))
  }

  def group(list:Array[String],fun:(String)=>String) = {
    val map = new util.HashMap[String,util.ArrayList[String]]()
    for (elem <- list) {
      val key = fun(elem)
      if(map.containsKey(key)){
        map.get(key).add(elem)
      }else{
        val value = new util.ArrayList[String]()
        value.add(elem)
        map.put(key,value)
      }
    }
    map
  }
}


4、根据指定规则对数组所有元素聚合
比如:Array(10,4,6,10,2)
规则: 求和/求乘积

package lj

object aaa {
    def main(args: Array[String]): Unit = {
      val list = Array(10,4,6,10,2)
      println(poly(list,_+_))
    }

    def poly(list:Array[Int],fun:(Int,Int)=>Int) = {
      var res = list(0)
      for (i<-1 until list.size) res = fun(res,list(i))
      res
    }
}


运行结果:

标签:练习题,String,val,Scala,list,println,Array,def
From: https://blog.csdn.net/W_051/article/details/136918843

相关文章

  • 【论文精读】MAE:Masked Autoencoders Are Scalable Vision Learners 带掩码的自动编码
    系列文章目录【论文精读】Transformer:AttentionIsAllYouNeed【论文精读】BERT:Pre-trainingofDeepBidirectionalTransformersforLanguageUnderstanding【论文精读】VIT:visiontransformer论文文章目录系列文章目录一、前言二、文章概览(一)研究背景(二)MAE的主......
  • PTA基础编程练习题目集 7—4 BCD解密
    题目描述:BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了!现在,你的程序要读入这个错误的十进......
  • SAM 练习题
    两个技巧:SAM匹配,删除最前面字符后缀树路径上,字符串长度连续一个区间的子串可以倍增得到线段树合并维护\(\text{endpos}\)SP687link考虑周期转Border,一个存在的Border为\(\text{lcp}(i,j)\),对应周期为\(|i-j|\),周期出现整次数为\(\dfrac{|i-j|}{\text{lcp}(......
  • [基础] DiT: Scalable Diffusion Models with Transformers
    名称DiT:ScalableDiffusionModelswithTransformers时间:23/03机构:UCBerkeley&&NYUTL;DR提出首个基于Transformer的DiffusionModel,效果打败SD,并且DiT在图像生成任务上随着Flops增加效果会降低,比较符合scalinglaw。后续sora的DM也使用该网络架构。Method网络结构整......
  • 第一章 计算机网络概述——提纲 + 练习题(体系结构相关习题、时延计算相关习题)
    文章目录第一章计算机网络概述1.2因特网概述1.3三种交换方式1.4计算机网络的分类1.5计算机网络的性能指标1.6计算机网络的体系结构(重点、难点)第一章-习题第一部分-体系结构相关1、2、3、4、5、6、7、8、9、10、练习题第二部分-时延相关1、2、3、4、5、第一......
  • [数组练习题]二分法查找操作实例:使用二分法查找有序数组中元素。 找到返回索引,不存在
    文章目录题干一、题目分析1.定义数组,用于后续在数组中查找元素2.对数组进行排序3.定义方法4.调用方法,打印输出二、代码1.代码块2.一图流总结题干提示:这段是题干,仔细阅读仔细分析:二分法查找操作:使用二分法查找有序数组中元素。找到返回索引,不存在输出-1。......
  • 概率期望进阶 + Min-Max容斥 练习题
    Luogu5644[PKUWC2018]猎人杀link题意:有\(n\)个人,每次在剩下的人中选择一个人杀死,选择\(i\)的概率为\(\dfrac{w_i}{\sum_jw_j}\),求第\(1\)个人是最后一个杀死的概率,答案对\(998244353\)取模。\(w_i\ge1,\space\sum\limits_{i=1}^nw_i\le10^5\)考虑容斥,枚举钦定......
  • 利用Scala与Apache HttpClient实现网络音频流的抓取
    概述在当今数字化时代,网络数据的抓取和处理已成为许多应用程序和服务的重要组成部分。本文将介绍如何利用Scala编程语言结合ApacheHttpClient工具库实现网络音频流的抓取。通过本文,读者将学习如何利用强大的Scala语言和ApacheHttpClient库来抓取网络上的音频数据,以及如......
  • Hive SQL必刷练习题:向用户推荐朋友收藏的商品(两种思路)
    问题需求:需要请向所有用户推荐其朋友收藏但是用户自己未收藏的商品,请从好友关系表(friendship_info)和收藏表(favor_info)中查询出应向哪位用户推荐哪些商品。期望结果如下:1)部分结果展示user_id(用户id)sku_id(应向该用户推荐的商品id)101210141017101910181011110112)相关表结构......
  • idea下安装Scala插件
    目录1.在官网下载IntelliJIDEA2.Scala安装过程3.代码测试1.在官网下载IntelliJIDEA官网地址:IntelliJIDEA–theLeadingJavaandKotlinIDE2.Scala安装过程打开idea,在左上角找到File(工具),然后在找到setting进入setting之后,找到plugins,搜索scala,点击安装并重启重启......