26_Scala集合常用API汇总

文章目录

  • 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.mzph.cn/pingmian/8981.shtml

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

相关文章

阵痛中的乳业产业,何时才能成为下一个啤酒产业?

说起饮品,近年来中国啤酒业中各大品牌齐齐聚焦高端化的趋势绝对值得一提。然而,与之相反,国内乳业却是仍未进入高端化阶段,甚至陷入了周期底部中。 图源:中国圣牧财报 增收降利 牧企承受巨大的供需缺口压力 从产业链…

Kubernetes最小单元Pod的生命周期

1.1 Pod生命周期 1.1.1 过程及状态 Pod 的生命周期管理是 Kubernetes 集群中非常重要的一部分,它涉及到 Pod 从创建到销毁的整个过程。下面是 Pod 生命周期中各个阶段的简要说明: Pod 创建过程:当一个 Pod 被创建时,Kubernetes 会…

chorme浏览器或者edge浏览器使用开发者模式

本篇文章主要讲解edge,因为它内核是chorme,还可以使用微软账号同步,谷歌翻译也凉凉了,edge还可以用翻译,推荐国内windows用户用它。 打开开发者模式 直接按F12点击右上角三个点...,点击更多工具&#xff…

Remix实现多语言

JS 中不同框架都有自己的多语言库,在 Remix 使用多语言,需要安装 remix-i18next 这个库。这个包是基于 i18next 开发的,使用方式可以到官网查看。 Remix-i18next 安装步骤如下: 安装依赖 npm install remix-i18next i18next rea…

go导入包时提示no required module provides package解决方法

原因,这个包在你的本机没有安装 如redis包的提示为 could not import github.com/gomodule/redigo/redis (no required module provides package "github.com/gomodule/redigo/redis")解决方法: go get github.com/gomodule/redigo/redis

easy_signin_ctfshow_2023愚人杯

https://ctf.show/challenges#easy_signin-3967 2023愚人杯信息检索,在请求荷载中发现一个base64 face.pngencode ZmFjZS5wbmc解密结果 flag.pngencode ZmxhZy5wbmc尝试一下 返回内容 Warning: file_get_contents(flag.png): failed to open stream: No such file…

压缩和归档库-LZ4介绍

1.简介 LZ4是一种快速的压缩算法,提供压缩和解压缩的速度,而牺牲了压缩率。它被设计用于快速的数据压缩和解压缩,特别是用于数据存储和传输。LZ4通常用于需要高速数据处理的场景,如数据库、日志文件处理和实时数据传输。 LZ4的特…

[NSSRound#1 Basic]basic_check

[NSSRound#1 Basic]basic_check 开题什么都没有,常规信息搜集也无效 发现题目允许PUT的两种做法: 1、 CURL的OPTIONS请求方法查看允许的请求方式 curl -v -X OPTIONS http://node4.anna.nssctf.cn:28545/index.php2、 kali自带的nikto工具扫描网址 Nik…

DetCLIPv3:面向多功能生成开放词汇的目标检测

DetCLIPv3:面向多功能生成开放词汇的目标检测 摘要IntroductionRelated worksMethod DetCLIPv3: Towards Versatile Generative Open-vocabulary Object Detection 摘要 现有的开词汇目标检测器通常需要用户预设一组类别,这大大限制了它们的应用场景。在本文中&…

新能源汽车充电站智慧充电电能服务综合解决方案

安科瑞薛瑶瑶18701709087/17343930412 ★解决方案 ✔目的地充电-EMS微电网平台 基于EMS解决方案从设备运维的角度解决本地充电的能量管理及运维问题,与充电管理平台打通数据,为企业微电网提供源、网、荷、储、充一体化解决方案。 ✔运营场站--电能服务…

python3有serial库吗

一、概述 pyserial模块封装了对串口的访问。 二、特性 在支持的平台上有统一的接口。 通过python属性访问串口设置。 支持不同的字节大小、停止位、校验位和流控设置。 可以有或者没有接收超时。 类似文件的API,例如read和write,也支持readline等…

基于Detectron2的计算机视觉实践

书籍:Hands-On Computer Vision with Detectron2: Develop object detection and segmentation models with a code and visualization approach 作者:Van Vung Pham,Tommy Dang 出版:Packt Publishing 书籍下载-《基于Detectr…

MySQL学习笔记11——数据备份 范式 ER模型

数据备份 & 范式 & ER模型 一、数据备份1、如何进行数据备份(1)备份数据库中的表(2)备份数据库(3)备份整个数据库服务器 2、如何进行数据恢复3、如何导出和导入表里的数据(1&#xff09…

(二十一)springboot实战——Spring AI劲爆来袭

前言 本节内容是关于Spring生态新发布的Spring AI的介绍,Spring AI 是一个面向人工智能工程的应用框架。其目标是将 Spring 生态系统的设计原则,如可移植性和模块化设计,应用到人工智能领域,并推广使用普通的Java对象&#xff08…

雪球期权是什么意思?你了解雪球期权吗?

今天期权懂带你了解雪球期权是什么意思?你了解雪球期权吗?雪球期权属于场外期权的一种,交易的方式只能通过线下跟券商询价的方式进行,类似场外个股期权的交易方式。 雪球期权是什么意思? 雪球期权,顾名思义…

js逆向,参数加密js混淆

关键词 JS 混淆、源码乱码、参数动态加密 逆向目标 题目1:抓取所有(5页)机票的价格,并计算所有机票价格的平均值,填入答案。 目标网址:https://match.yuanrenxue.cn/match/1目标接口:https://ma…

SSE介绍(实现流式响应)

写在前面 本文一起来看下SSE相关内容。 1:SSE是什么 全称,server-send events,基于http协议,一次http请求,server端可以分批推送数据, 不同于websocket的全双工通信,SSM单向通信,一般应用于需…

如何利用IPIDEA代理IP优化数据采集效率?

一、 前言二、 IPIDEA介绍三、体验步骤四、实战训练五、结语 一、 前言 在全球化与信息化交织的当代社会,数据已成为驱动商业智慧与技术革新的核心引擎。网络,作为信息汇聚与交流的枢纽,不仅是人们获取知识的窗口,更是商业活动与技…

【数据结构】详解栈

今天我们主要来了解栈!如果对知识点有模糊,可翻阅以往文章哦! 个人主页:小八哥向前冲~-CSDN博客 所属专栏:数据结构【c语言版】_小八哥向前冲~的博客-CSDN博客 c语言专栏:c语言_小八哥向前冲~的博客-CSDN博…

树和二叉树的定义和基本术语

文章目录 前言一、树的定义二、树的基本术语三、二叉树的定义总结 前言 T_T此专栏用于记录数据结构及算法的(痛苦)学习历程,便于日后复习(这种事情不要啊)。所用教材为《数据结构 C语言版 第2版》严蔚敏。 一、树的定义…