26_Scala集合常用API汇总

news2025/1/11 23:58:47

文章目录

  • 1.mkString
  • 2.size,length,isEmpty,contains
  • 3.reverse ,length,distinct
  • 4.获取数据相关
    • 4.1数据准备
    • 4.2准确获取尾部last
    • 4.3 除了最后一个元素不要其他都要
    • 4.4从集合获取部分数据
  • 5.删除数据
    • 5.1删除3个从左边
    • 5.2删除3个右边
  • 6.切分数据splitAt(n:Int)
  • 7.滑动窗口
  • 8.多数据集的相关操作:交并补差
    • 8.1交集
    • 8.2并集
    • 8.3差集
  • 9.拉链

1.mkString

import scala.collection.mutable
val map = mutable.Map(
  ("a", 1),
  ("b", 2),
  ("c", 3)
)
println(map.mkString)   //b -> 2a -> 1c -> 3    原因是map无序

在这里插入图片描述

2.size,length,isEmpty,contains

println(map.size)
println(map.isEmpty)
println(map.contains("c"))

在这里插入图片描述

map只有size没有length

集合的方法没有()

3.reverse ,length,distinct

//    3.reverse ,length 反转集合,仅适用于有序的序列集合
import scala.collection.mutable.ArrayBuffer
val arr = ArrayBuffer(2, 0, 4, 8)
println(arr.reverse)
println(arr.length)

在这里插入图片描述

distinct底层还是使用HashSet

4.获取数据相关

4.1数据准备

val map_las = mutable.Map(
  ("a", 1),
  ("b", 2),
  ("c", 3)
)
val tuple = (2, 0, 4, 8)
val set_las = mutable.Set(2, 0, 4, 8)
val arrayBuffer_las = ArrayBuffer(2, 0, 4, 8)
val list_las = mutable.Seq(2, 0, 4, 8)
//    获取第一个元素
//    tuple获取第一个元素类比map中的第一个元素
    println(tuple._1)
    println(map_las.head._1)
    println(arrayBuffer_las(0))
    println(arrayBuffer_las.head)
    println(list_las.head)
    println(list_las(0))

在这里插入图片描述

小结:都支持head、tail方法,上述展示head方法;

通用集合都可通过索引访问包括map(idx);

元组和map的kv键值对对象通过 _idx方法访问;

println(tuple._1)

Scala的tail方法,tail表示除了头以外的所有元素

在这里插入图片描述

甚至可以迭代

println(list_las.tail.tail)

4.2准确获取尾部last

在这里插入图片描述

4.3 除了最后一个元素不要其他都要

类比tail

在这里插入图片描述

同理,init也可以迭代操作

list_las.inits.inits		//逐步的往前获取元素

作者认为元素是一个一个添加的,所以真个集合来说,当最后一个元素进行添加操作,前面所有的元素相对于最终的集合为初始(init)集合; //此处这样理解

学习语言时候,跟着作者思路思考是一种非常有效的学习方法;
scala作者设计的方法有些是根据单词意思设计,有些是根据逻辑设计

4.4从集合获取部分数据

//    4.4从集合获取部分数据
      println(map_las.take(3))
      println(arrayBuffer_las.take(3))
      println(set_las.take(3))
      println(list_las.take(3))

在这里插入图片描述

从右边取takeright

println(map_las.takeRight(3))
println(arrayBuffer_las.takeRight(3))
println(set_las.takeRight(3))
println(list_las.takeRight(3))

在这里插入图片描述

5.删除数据

5.1删除3个从左边

在这里插入图片描述

5.2删除3个右边

在这里插入图片描述

我的数据顺序都是2048添加,除了map
set集合由于无序,首元素是0所以最终删除后输出Set(0)

6.切分数据splitAt(n:Int)

将集合切分成2份,第一份拿到n个元素splitAt(n) 最终以元组形式存在

println(set_las.splitAt(1))
println(set_las.splitAt(2)._1)
println(map_las.splitAt(2))
println(arrayBuffer_las.splitAt(2))
println(list_las.splitAt(2))

在这里插入图片描述

7.滑动窗口

  • API sliding(windows_size:Int) //返回值是一个迭代器
  • sliding(windows_size : Int , step : Int)
  • –使用场景:获取每连续的 2 条数据
  • 2 0 4 8
  • (2,0) (0,4) (4,8) 滑动获取数据
  • 滑动窗口最终获取的还是原始类型数据
//        做一个滑动窗口,依次拿两条数据
    val stringToInts = map_las.sliding(2)
    while (stringToInts.hasNext){
      println(stringToInts.next())
    }
    println("=================")

    val iterator = arrayBuffer_las.sliding(2)
    while (iterator.hasNext){
      println(iterator.next()(0))
    }

在这里插入图片描述

滑动窗口最终获取的还是原始类型数据

滑动一次跳过两个元素使用step关键字默认情况下step=1

val iterator1 = arrayBuffer_las.sliding(2,2)
while (iterator1.hasNext){
  println(iterator1.next())
}

在这里插入图片描述

8.多数据集的相关操作:交并补差

在这里插入图片描述

8.1交集

API intersect

运算不改变原始集合

在这里插入图片描述

英文单词intersect 就是交叉的意思

8.2并集

API union

在这里插入图片描述

8.3差集

API diff
两个集合中不同的元素就是差集different

在这里插入图片描述

9.拉链

将两个数据集拉在一起

//基本原则:将两个数据集中相同的位置的数据拉在一起
//    (1, 0, 2, 4)
//    (2, 0, 4, 8)
//    1,2拉一起    0,0拉一起  2,4拉一起  4,8拉一起
//    API   zip     //返回值是一个元组,甚至可以直接转map

在这里插入图片描述

拉链解决了通用集合如何向Map转化的难题;

但是此处拉链转化Map是immutable类型需要一步转化

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows下启动Tomcat显示乱码解决办法

1、Windows下启动Tomcat显示乱码 2、解决办法 找到 D:\apache-tomcat-9.0.89\conf下的logging.properties,找到java.util.logging.ConsoleHandler.encoding的值改为GBK,就可以了 完美解决!显示正常的中文了

Ansible——playbook编写

一、简介 1.什么是playbook Ansible Playbook 是设定自动化任务的一种蓝图,可在无需人工干预或有限干预的前提下执行复杂的 IT 操作。Ansible Playbook 对一组或一类共同构成 Ansible 清单的主机执行。 Ansible Playbook 本质上是一些框架,是一些预先编…

指定地区|CSC高级研究学者赴澳大利亚访学交流

CSC高级研究学者均是正高或博导级的,学术背景较强,多数能DIY联系到国外合作机构。但也有些申请者因指定地域或学校,或须在短期内获取邀请函故而求助于我们。本案例D教授就指定澳大利亚的墨尔本地区,我们最终用维多利亚大学的邀请函…

企业是保留传统的MES还是换新的MES?

在选择上MES系统的时候,企业可以根据自身所处行业不同、当前阶段不同,以及业务需求的差异,对症下药,选择适合自己的解决方案。对于有些企业本来就有MES系统,但是已经过时过旧,就要考虑换新的MES系统了. 保留…

射频无源器件之巴伦

一. 巴伦的作用 Balun,balanced-unbalanced的缩写,即平衡-不平衡转换器,是一种三端口无源器件,其本质是通过电感线圈的相互耦合实现的信号转换。用于平衡信号(差分信号,即振幅相等、相位相差180 的两个信号)与非平衡信号(单端信号)的相互转换。 Balun是高频电路重要器…

深入探索 C++ 中 string 的用法:从基础到实践

C String 用法详解 C中的 std::string 是一个非常强大且灵活的类,用于处理字符串。std::string 类是C标准库中的一部分,它提供了丰富的成员函数来执行各种字符串操作,如连接、比较、查找、替换等。在本篇博客中,我们将深入探索 s…

uniapp实现下拉刷新效果-uniapp原生接口

onPullDownRefresh | uni-app官网 1、需要在 pages.json 里,找到的当前页面的pages节点,并在 style 选项中开启 enablePullDownRefresh 2、生命周期中添加onPullDownRefresh,下拉时获取数据 3、处理完数据后,停止下拉效果stopPul…

嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~

随着物联网和智能设备的快速发展,嵌入式开发和鸿蒙系统成为了当前技术领域的热门话题。鸿蒙系统作为华为推出的全场景分布式操作系统,旨在连接各种智能设备,提供无缝的跨设备体验。而南向开发则是鸿蒙系统中的一个重要方向,主要涉…

数据结构复习/学习9--堆/堆实现/升降序建堆/top-k问题

一、堆与完全二叉树 1.堆的逻辑与物理结构 2.父节点与子节点的下标 3.大小根堆 二、堆的实现(大根堆为例) 注意事项总结: 注意堆中插入与删除数据的位置和方法与维持大根堆有序时的数据上下调整 三、堆排序(基于上述的向上与向下调整建堆)…

【进程等待】是什么 | 为什么 | 怎么办 | wait阻塞等待

目录 进程等待是什么? 为什么要进程等待? 如何进程等待? wait 阻塞等待 进程等待是什么? 进程终止会把进程退出的数据(退出码和退出信号)存放到进程的PCB中保存下来,让父进程进行等待。…

在国企分公司做信息宣传新闻投稿的经验分享

作为一名国企分公司的信息宣传工作者,我亲历了从传统投稿方式到数字化转型的全过程,这段经历既充满了挑战,也收获了成长。回首最初的日子,那些用邮箱投稿的时光,至今仍让我感慨万千。 初尝辛酸,邮箱投稿的艰难岁月 刚接手信息宣传工作时,我满腔热情,却很快被现实的冷水浇了个透…

了解内存函数

✨✨欢迎&#x1f44d;&#x1f44d;点赞☕️☕️收藏✍✍评论 个人主页&#xff1a;秋邱博客 所属栏目&#xff1a;C语言 前言 内存函数不止malloc、calloc、realloc、free还有memcpy、memmove、memset、memcmp。前四个的头文件是<stdlib.h>,后四个的头文件是<strin…

哪些博客类型是最受欢迎的?

在创建博客时&#xff0c;您可能会想到的最常见的问题之一是哪些是最受欢迎的博客类型&#xff1f;有许多不同类型的博客涉及广泛的主题&#xff0c;兴趣和受众。对于一个成功的博客&#xff0c;你需要提前计划并选择适合你的利基市场。在本文中&#xff0c;我们将分享您可以立…

Navicat导出表结构到Excel或Word

文章目录 sql语句复制到excel复制到Word sql语句 SELECTcols.COLUMN_NAME AS 字段,cols.COLUMN_TYPE AS 数据类型,IF(pks.CONSTRAINT_TYPE PRIMARY KEY, YES, NO) AS 是否为主键,IF(idxs.INDEX_NAME IS NOT NULL, YES, NO) AS 是否为索引,cols.IS_NULLABLE AS 是否为空,cols.…

OpenMV 图像串口传输示例

注意&#xff1a;本程序根据 OpenMV采集图片通过串口发送&#xff0c;PC接收并保存为图片 更改。 一、例程说明 这个例程主要实现了以下功能: 1. OpenMV 端采集图像:使用OpenMV开发板上的摄像头采集实时图像数据。 2. 通过串口传输图像数据:将采集到的图像数据打包成字节流,…

Github使用教程(流畅登录)

『教程』手把手教你流畅访问Github_哔哩哔哩_bilibili 根据以上视频整理。 1)uu.163.com 下载加速器 2&#xff09;搜索学术资源 3&#xff09;会弹出这个网页 4&#xff09;此时再从github上下载项目会变快 5&#xff09;下载完成后&#xff0c;结束加速。 视频中还分享…

Springboot+vue项目健身房课程预约平台

开发语言&#xff1a;Java 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用框架:springbootvue JDK版本&#xff1a;jdk1.8 本系统主要实现了首页、个人中心、用户管理、教练管理、会员卡管理、购买会员管理、课程类型管理、课程信息管理、课程购买…

Spring Task及订单状态定时处理

1&#xff1a;Spring Task概念&#xff1a; Spring Task 是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑 定时任务的理解 定时任务即系统在特定时间执行一段代码&#xff0c;它的场景应用非常广泛&#xff1a; 购买游戏的月卡会员后&a…

数据结构-线性表-链表-2.3-6

有一个带头结点的单链表L&#xff0c;设计一个算法使其元素递增有序。 void sort(Linklist &L){LNode *pL->next,*pre;LNode *rp->next;p->nextNULL;pr;while(p){rp->next;preL;while(pre->next!NULL&&pre->next->data<p->data){prepre…

最新AI实景自动无人直播软件:智能讲解、一键开播,享受24小时自动专业直播体验

在现今数字化时代&#xff08;ai无人直播下载&#xff1a;hzzxar&#xff09;直播行业越来越受到人们的关注和喜爱。随着人工智能的不断发展&#xff0c;AI实景自动无人直播软件应运而生&#xff0c;为商家提供了更便捷、高效的直播方式。本文将介绍如何利用这一创新技术&#…