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.mfbz.cn/a/602307.html

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

相关文章

解决“您的连接不是私密连接”

目录 那么为什么会出现这样提示呢 https访问有什么不同 将http访问更改为https访问 当您在浏览网页时,遇到“您的连接不是私密连接”的提示,这通常表示浏览器认为您的连接不够安全。这是因为浏览器无法信任网站使用的SSL证书,或者网站没有…

【系统架构师】-UML-用例图(Use Case)

1、概述 用于表示系统功能需求,以及应用程序与用户或者与其他应用程序之间的交互关系。 2、组成 参与者(Actors):与系统交互的用户或其他系统。用一个人形图标表示。用例(Use Cases):系统需要…

平滑矢量图形综述:表示、创建、光栅化和图像矢量化的最新进展

摘要 平滑矢量图形领域探索了轻量级图像表示的表示、创建、光栅化和自动生成,常用于可缩放图像内容。过去几十年中,出现了多种概念性方法来表示具有平滑渐变的图像,每种方法都引发了独立的研究线索,包括流行的梯度网格和扩散曲线…

工程技术SCI期刊,中科院三区,一投就中,国人友刊!

一、期刊名称 Industrial Management & Data Systems 二、期刊简介概况 期刊类型:SCI 学科领域:工程技术 影响因子:5.5 中科院分区:3区 出版方式:订阅模式/开放出版 版面费:$4120 三、期刊征稿范…

QT功能 实现静态内容国际化实验

文章目录 第一步:新建一个QT工程第二步:添加控件第三步:在pro文件中添加内容第四步:更新文件第五步:打开QT的Linguist第六步:添加翻译内容第七步:回到QT Creator中添加文件第八步:给…

Colibri for Mac v2.2.0激活版:专业级无损音乐播放器

Colibri for Mac是一款专为Mac用户设计的高分辨率无损音乐播放器。它基于BASS技术构建,为用户带来极致的音频体验。Colibri支持所有流行的无损和有损音频格式,如FLAC、MP3、AAC等,确保音乐播放的清晰度和完美度。其独特的清晰比特完美播放技术…

月均互动超50万!“仪式感”何以盛行?小红书数据分析揭示消费动力

现代年轻人:“赚不到钱,却爱花钱买仪式感”。审慎消费的当下,“仪式感消费”不减反增,小红书平台相关内容更是持续火爆,成为品牌圈粉消费者的关键词。 这届小红书用户,热衷为“仪式感”氪金 “XX的第一杯奶…

【mysql】mysql单表查询、多表查询、分组查询、子查询等案例详细解析

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

常用的外贸软件有哪些

常用的外贸软件涵盖了多个方面,包括客户开发、订单管理、库存控制、客户关系管理(CRM)、财务管理以及跨境电商平台等。以下是一些代表性的外贸软件和平台: 客户开发与营销软件: 大镜山谷歌搜索大师易谷歌地图数据采集大师米贸搜 外贸管理软件 (ERP): 神卓…

【Kali Linux工具篇】使用Aircrack-ng破解wifi密码

前期准备 1、一个无线网卡 2、密钥爆破字典 实站过程 1、设置wlan为监听模式 airmon-ng start wlan0 #开启网卡wlan0监听模式 iwconfig #查看网卡状态,发现wlan0mon,表示已开启成功2、探测附近WiFi airdump-ng wlan0monBSSID 代表…

零售全渠道营销业务链分析,让企业管控能力大幅加强!

对于传统的、规模化的零售快消企业来讲,面临着很大的渠道管理和建设问题,如何尽快实现整个营销体系的全渠道数字化转型是当务之急、重中之重。 面对错综分散的经销商,零售快消企业订货流程会越复杂,加之对门店管理较为粗放&#…

技术速递|Java on VS Code 3月更新 - 大量 Spring 新功能!测试覆盖率功能正式发布!​

作者:Nick Zhu 排版:Alan Wang 大家好,欢迎来到2024年3月的 Visual Studio Code Java 更新!在本篇博客中,我们将分享大量 Spring 有关的新功能以及测试覆盖率的更新,让我们开始吧! Spring Boot…

【网络】网络层ICMP协议

🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁&am…

新建的springBoot WEB项目无法自动返回html模版(gradle+kotlin版本)

最近研究了springBoot创建web项目, 第一步服务端返回字符串没有问题,第二步返回html时,还是返回的字符串。 文章目录 一、参考方案二、新建springBoot web项目三、启动项目的三种方式 一、参考方案 将控制器类的 RestController 改为 Contro…

【JavaWeb】网上蛋糕商城后台-订单管理

概念 前面通过多篇文章以完全实现了用户在网上蛋糕商城平台上的所有功能和操作,从本文开始,实现网站的后台管理功能的介绍和操作。 订单列表 想要进入后台管理系统,则登入的用户一定是管理员账号,这个账号和密码只有管理员才知…

图搜索算法 - 拓扑排序

相关文章: 数据结构–图的概念 图搜索算法 - 深度优先搜索法(DFS) 图搜索算法 - 广度优先搜索法(BFS) 拓扑排序 概念 几乎所有的工程都可分为若干个称作活动的子工程,而这些子工程之间,通常受…

多个开源的js补环境框架测试

原文链接:https://mp.weixin.qq.com/s/uEMFGpE5bqmTvzSgX2twvA 前言 在做js逆向时肯定会遇到补环境的情况,看到github开源了好几个补环境用的框架,这篇文章做个测试,看看哪个比较好用。 https://github.com/pysunday/sdenvhttp…

使用Tkinter实现数据预测工具的GUI界面展示

如果构建好预测模型后,想将预测模型通过一个交互式的页面显示,可以通过下边两种方式实现。 本文中代码有详细解析注释,便不再如往期一样分开讲解了,有需要的朋友可以直接拿去使用,代码可以直接运行,把预测…

【计算机网络原理】初始网络原理和一些名词解释​​

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

【读点论文】SAM-LIGHTENING: A LIGHTWEIGHT SEGMENT ANYTHING MODEL,改进自注意力机制,然后知识蒸馏提点

SAM-LIGHTENING: A LIGHTWEIGHT SEGMENT ANYTHING MODEL WITH DILATED FLASH ATTENTION TO ACHIEVE 30 ACCELERATION ABSTRACT 分割任意模型(SAM)由于其零样本泛化能力,在分割任务中引起了广泛的关注。然而,SAM在现实世界实践中…
最新文章