Scala---集合(list,set)详解

一、List

list集合有顺序,有索引,元素可重复

1、Nil 空列表
	val lst=Nil
    println(Nil)//List()
    //向左侧添加一个元素,::起到右连接的作用。
    val lst1=8::(4::(0::Nil))
    println(lst1)//List(8, 4, 0)
2、创建集合
//调用apply方法进行创建
    val list = List(1,2,4,5,9,5)
    println(list.isEmpty)
    //查看头部元素
    println(list.head)//1
    //查看尾部元素
    println(list.tail)//List(2, 4, 5, 9, 5)
    //查看最后一个元素
    println(list.last)//5
    //计算集合的和
    println(list.sum)//26

    //创建求和方法
    def sums(l:List[Int]):Int={
      if(l.isEmpty){
        0
      }else{
        l.head+sums(l.tail)
      }
    }
    sums(list)
3、增删查(不可改)
	val list = List(1,2,3,4)
    val list2 = List(5,6,7,3)
    //添加元素都添加到集合的左侧
    //添加元素第一种
    val list3=0::list
    println(list3)//List(0, 1, 2, 3, 4)
    //添加元素第二种
    val list4 = list2.::(4)
    println(list4)//List(4, 5, 6, 7, 3)
    //添加元素第三种
    val list5 = 8+:list2
    println(list5)//List(8, 5, 6, 7, 3)
    //添加元素第四种
    val list6 = list2.+:(5)
    println(list6)//List(5, 5, 6, 7, 3)
    //添加元素第五种,给尾部添加
    val list15 =list2.:+(7)
    println(list15)//List(5, 6, 7, 3, 7)

    //添加集合第一种
    val list7 = list:::list2
    println(list7)//List(1, 2, 3, 4, 5, 6, 7, 3)
    //添加集合第二种
    val list8 = list.:::(list2)
    println(list8)  //List(5, 6, 7, 3, 1, 2, 3, 4)
    //添加集合第三种
    val list11 = list++list2
    println(list11)//List(1, 2, 3, 4, 5, 6, 7, 3)
    //添加集合第四种
    val list16 = list.++(list2)
    println(list16)//List(1, 2, 3, 4, 5, 6, 7, 3)

    //整合两个集合为一个新的集合
    //union:整合两个集合中的元素为一个新的集合。新的集合包含两个集合中所有的元素
    val list12 = list.union(list2)
    println(list12)//List(1, 2, 3, 4, 5, 6, 7, 3)
    //针对集合中的元素进行去重
    val distinct = list12.distinct
    println(distinct)//List(1, 2, 3, 4, 5, 6, 7)

    //删除元素
    //drop会返回一个新的集合,原集合保持不变,n代表删除几个元素
    val list13 = list.drop(2)
    val list14 = list.dropRight(2)
    println(list13)//List(3, 4)
    println(list14)//List(1, 2)

    //查询元素,n是集合下标
    println(list(3))//4
4、集合的遍历
	val list = List(1,3.3,"hello",9)
    //第一种方式
    for(i<-list){
      println(i)
    }

    //第二种方式
    for(i<-0 to list.length-1){
      println(list(i))
    }

    //第三种方式
    list.foreach(println)
5、可变集合的使用
	val blist= ListBuffer[Int](1,2,3,4,9)
	//改
	blist(3)=0
    println(blist)//ListBuffer(1, 2, 3, 0, 9)
    //增加
    blist.append(5,8)
    println(blist)//ListBuffer(1, 2, 3, 0, 9, 5, 8)
    //排序
    println(blist.sorted)//ListBuffer(0, 1, 2, 3, 5, 8, 9)

二、Set

set集合无序,没有索引,元素不可重复

1、不可变集合
 	//不可变集合的创建
    val set = Set(1,2,3,5)
    println(set)//Set(1, 2, 3, 5)
    //添加元素
    var set1=set+9
    println(set1)//Set(5, 1, 9, 2, 3)
    //添加集合
    var set2=Set(3,4,5,6)
    var set3=set++set2
    println(set3)//Set(5, 1, 6, 2, 3, 4)
    //删除元素
    val set4 = set.drop(3)
    println(set4)//Set(5)
    //删除元素第二种
    val set5 = set.-(1,5)
    println(set5)//Set(2, 3)

    //创建不可变集合第二种
    val hashSet = new HashSet[Int]()
2、可变的set集合
	//要想创建可变的set集合,要导包,导包后,默认使用的就是可变集合
    import scala.collection.mutable
    import scala.collection.mutable.Set
    val set = Set(1,2,3,4)
    //添加元素
    set.add(5)
    println(set)//Set(1, 5, 2, 3, 4)
    //添加元素第二种
    set+=6
    println(set)//Set(1, 5, 2, 6, 3, 4)
    //添加多个元素
    set.+=(22,33,44)
    println(set)//Set(33, 1, 5, 2, 6, 3, 4, 22, 44)
    //添加集合
    var set1=Set(11,66)
    set++=set1
    println(set)//Set(33, 66, 1, 5, 2, 6, 3, 4, 22, 11, 44)
    //添加集合第二种方式
    var set2=Set(666)
    val set3 = set.union(set2)
    println(set3)//Set(33, 66, 1, 5, 2, 666, 6, 3, 4, 22, 11, 44)
    //删除元素
    set.remove(33)
    println(set)//Set(66, 1, 5, 2, 6, 3, 4, 22, 11, 44)
    //删除多个元素
    set.-=(66,1,2)
    println(set)//Set(5, 6, 3, 4, 22, 11, 44)

    //第二种创建方式
    val hashSet1 = new mutable.HashSet[Int]()
    hashSet1.add(2)
    println(hashSet1)//Set(2)
    hashSet1.+=(4)
    println(hashSet1)//Set(2, 4)
3、Set集合的遍历
	val set = Set(1,2,3,4,5,6,7)
	//第一种
    for(i<-set){
      println(i)
    }
    //第二种
    set.foreach(println)

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

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

相关文章

学习-官方文档编辑方法

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Linux常用命令英文全称与中文解释

Linux操作系统中有许多常用的命令&#xff0c;每个命令都有其英文全称&#xff08;Full Name&#xff09;和中文解释。以下是一些常见的Linux命令及其英文全称和中文解释的列表&#xff1a; 你猜猜这个是哪个软件的快捷键↑ man: Manual 意思是手册&#xff0c;可以用这个命…

如何让指定 Windows 程序崩溃

一、为何要把人家搞崩溃呢 看到这个标题&#xff0c;大家可能觉得奇怪&#xff0c;为什么要让指定程序崩溃呢&#xff0c;难道是想作恶吗&#xff1f;&#x1f613; 哈哈&#xff0c;绝对不是&#xff0c;真实原因是这样的。如果大家用过 Windows 电脑&#xff0c;可能见过类…

【个人博客搭建】(3)添加SqlSugar ORM 以及Json配置文件读取

1、安装sqlsugar。在models下的依赖项那右击选择管理Nuget程序包&#xff0c;输入sqlsugarcore&#xff08;因为我们用的是netcore&#xff0c;而不是net famework所以也对应sqlsugarcore&#xff09;&#xff0c;出来的第一个就是了&#xff0c;然后点击选择版本&#xff0c;一…

展会媒体邀约资源,媒体宣传服务执行

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 在组织展会时&#xff0c;媒体宣传服务的执行是提升展会知名度和影响力的关键环节。 确定目标媒体&#xff1a;根据展会的主题和目标受众&#xff0c;选择适合的媒体进行邀请。这可能包…

微软 SDL 安全研发生命周期详解

微软SDL&#xff08;Security Development Lifecycle&#xff09;是一种安全软件开发的方法论&#xff0c;它强调在整个产品开发过程中融入安全考虑因素。SDL 是一个动态的过程&#xff0c;包括多个阶段和活动&#xff0c;以确保产品的安全开发、测试、部署和运行。Microsoft 要…

2023天梯赛 L3_2 完美树 【树形DP、01最大/小价值】

完美树 思路 观察发现&#xff1a;如果一颗子树 u u u&#xff0c;它刚好有偶数个节点&#xff0c;那么 0 0 0 和 1 1 1 的染色数量一定相等&#xff0c;如果有奇数个节点&#xff0c;那么 0 0 0 和 1 1 1 的数量一定恰好相差 1 1 1&#xff08;可能是 0 0 0 多&#x…

OpenHarmony多媒体-mp4parser

简介 一个读取、写入操作音视频文件编辑的工具。 编译运行 1、通过IDE工具下载依赖SDK&#xff0c;Tools->SDK Manager->Openharmony SDK 把native选项勾上下载&#xff0c;API版本>10 2、开发板选择RK3568&#xff0c;ROM下载地址. 选择开发板类型是rk3568&#xf…

高可用集群——keepalived

目录 1 高可用的概念 2 心跳监测与漂移 IP 地址 3 Keepalived服务介绍 4 Keepalived故障切换转移原理介绍 5 Keepalived 实现 Nginx 的高可用集群 5.1 项目背景 5.2 项目环境 5.3 项目部署 5.3.1 web01\web02配置&#xff1a; 5.3.2nginx负载均衡配置 5.3.3 主调度服…

碳实践|手把手教你开展组织碳核算

一、背景介绍 政府间气候变化委员会 IPCC(Intergovernmental Panel on Climate Chang)是世界气象组织(WMO)及联合国环境规划署(UNEP)于1988年联合建立的政府间机构。 IPCC在1997年和2000年分别发布了《1996 年 IPCC 国家温室气体清单指南修订本》和《国家温室气体清单优良作法…

【氮化镓】栅极漏电对阈值电压和亚阈值摆幅影响建模

本文是一篇关于p-GaN门AlGaN/GaN高电子迁移率晶体管&#xff08;HEMTs&#xff09;的研究文章&#xff0c;发表于《应用物理杂志》&#xff08;J. Appl. Phys.&#xff09;2024年4月8日的期刊上。文章的标题为“Analysis and modeling of the influence of gate leakage curren…

什么是SRE?

什么是SRE&#xff1f; SRE&#xff0c;全称为Site Reliability Engineering&#xff0c;即网站可靠性工程&#xff0c;是一种职能角色&#xff0c;它融合了软件工程和系统管理的技能与实践&#xff0c;旨在通过软件和自动化的方式来提高系统的可靠性、稳定性和扩展性。以下是…

Zabbix自定义模板、邮件报警、自动发现与注册、proxy代理、SNMP监控

目录 自定义监控内容 1.明确需要执行的 linux 命令 2.创建 zabbix 的监控项配置文件&#xff0c;用于自定义 key 3.在服务端验证新建的监控项 在 Web 页面创建自定义监控项模板 1.创建模板 2.创建应用集&#xff08;用于管理监控项的&#xff09; 3.创建监控项 4.创建…

JEECG表格选中状态怎么去掉

官网代码&#xff08;在取消选中状态的时候不生效&#xff09; rowSelection() {return {onChange: (selectedRowKeys, selectedRows) > {console.log(selectedRowKeys: ${selectedRowKeys}, selectedRows: , selectedRows);},getCheckboxProps: record > ({props: {disa…

【基础】gcc-动态库和静态库的创建和使用-命令

目录 1 动态库的建立使用2 动态库封装过程2.1 编译动态库2.2 使用动态库2.3 命令参数说明 3 静态库封装过程3.1 静态库的封装3.2 静态库的使用 1 动态库的建立使用 首先建立一个头文件&#xff0c;和三个.cpp文件&#xff0c;目的是要把这些文件链接成动态库&#xff1a; 其中…

C#创建背景色渐变窗体的方法:创建特殊窗体

目录 1.让背景渐变色的理论基础 2.让背景渐变色的方法 3.一个实施例 &#xff08;1&#xff09;Form1.Designer.cs &#xff08;2&#xff09;Form1.cs &#xff08;3&#xff09;渐变的蓝色背景 在窗体设计时&#xff0c;可以通过设置窗体的BackColor属性来改变窗口的背…

Golang | Leetcode Golang题解之第35题搜索插入位置

题目&#xff1a; 题解&#xff1a; func searchInsert(nums []int, target int) int {n : len(nums)left, right : 0, n - 1ans : nfor left < right {mid : (right - left) >> 1 leftif target < nums[mid] {ans midright mid - 1} else {left mid 1}}retu…

【mac】【python】新建项目虚拟环境后,使用命令pip出现错误:zsh: command not found: pip

【mac】【python】新建项目虚拟环境后&#xff0c;使用命令pip出现错误&#xff1a;zsh: command not found: pip 问题描述&#xff1a; 拉取或者创建新的python项目时&#xff0c;为项目添加了新的解释器&#xff0c;创建啦虚拟环境&#xff0c;但是执行pip命令的时候找不到命…

倾斜摄影修模软件模方(ModelFun)4.1.0下载及安装教程

文章目录 一、模方(ModelFun)4.1.0安装二、模方(ModelFun)4.1.0下载一、模方(ModelFun)4.1.0安装 订阅专栏后(获取专栏内所有文章阅读权限及软件安装包),从文末下载软件模方(ModelFun)4.1.0安装包,如下所示,并开始安装。 1.计算机需要进入测试模式 键盘WIN+R,打开运行窗…

重磅福利!参与现金红包抽奖活动,赶快行动吧!

文章目录 粉丝福利 粉丝福利 亲爱的朋友们&#xff0c;令人振奋的消息来啦&#xff01;本月&#xff0c;我们特地为大家准备了一份特别的粉丝福利&#xff01;只要您轻轻一点&#xff0c;关注我们的公众号&#xff0c;就有机会抽取现金红包&#xff0c;让您的生活多一份惊喜与喜…
最新文章