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

一、List

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

1、Nil 空列表
	val lst=Nilprintln(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::listprintln(list3)//List(0, 1, 2, 3, 4)//添加元素第二种val list4 = list2.::(4)println(list4)//List(4, 5, 6, 7, 3)//添加元素第三种val list5 = 8+:list2println(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:::list2println(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++list2println(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.distinctprintln(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)=0println(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+9println(set1)//Set(5, 1, 9, 2, 3)//添加集合var set2=Set(3,4,5,6)var set3=set++set2println(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.mutableimport scala.collection.mutable.Setval set = Set(1,2,3,4)//添加元素set.add(5)println(set)//Set(1, 5, 2, 3, 4)//添加元素第二种set+=6println(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++=set1println(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.mzph.cn/diannao/507.shtml

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

相关文章

【投稿优惠|稳定检索】2024年低碳发展与地球科学国际会议 (LCDES 2024)

2024年低碳发展与地球科学国际会议 (LCDES 2024) 2024 International Conference on Low Carbon Development and Earth Science 【会议简介】 2024年低碳发展与地球科学国际会议即将在长沙盛大召开。本次会议将汇聚全球低碳发展与地球科学领域的专家学者&#xff0c;共同探讨…

如何快速成为顶尖项目经理?新手必看!

当今社会&#xff0c;万事皆项目&#xff0c;企业也面临着各种变化&#xff0c;企业项目管理的能力和水平对组织和个人的核心竞争力有着重要影响。 作为项目经理&#xff0c;需要养成持续学习的习惯和能力&#xff0c;具备顶级项目经理的专业水平和素养&#xff0c;才能使自己…

登录解析(前端)

登录代码 1、登录之后做了什么&#xff1f; 执行登陆方法&#xff0c;成功之后&#xff0c;路由跳转到指定路径或者根目录 2、this.$store.dispatch是什么意思&#xff1f; this.$store.dispatch(‘Login’, this.loginForm) 来调取store里的user.js的login方法3、this.$r…

Hive:transform和udf

工作中发现有时候会用到python脚本进行数据计算&#xff0c;但是现在貌似已经不这样再处理&#xff0c;一般使用封装好的udf函数。 transform的基本用法为&#xff1a; transform中的值作为输入&#xff0c; 然后传递给python脚本&#xff0c;最后经过python的处理后&#xf…

将MySQL数据库导入到EA模型的教程

将MySQL数据库导入到EA 1.下载安装mysql-connector-odbc2.在管理工具中新增ODBC数据源3.在EA中新建项目4.链接MYSQL数据源4.1 安装64位的ODBC驱动可能出现”在连接ODBC 时发生错误&#xff0c;请相关检查设置“的提示&#xff0c;卸载后重新安装32位ODBC驱动后可以正常执行 5.导…

vue纯前端实现表格分页及条件查询功能

由于接口返回数据过慢&#xff0c;故而采用前端对数据进行处理分页的方法实现表格分页及条件查询。 一、表格 表格采用elementUI的el-table&#xff0c;只需要对数据data进行处理赋值即可。 <el-table:data"tableData"style"width: 100%"><el-t…

智慧园区引领产业智能化升级:科技创新驱动打造智慧化、高效化产业新未来

随着全球科技革命的深入推进&#xff0c;以大数据、云计算、物联网、人工智能等为代表的新一代信息技术正深刻改变着传统产业的发展模式。在这一背景下&#xff0c;智慧园区作为产业智能化升级的重要载体和平台&#xff0c;正以其前瞻性的规划、创新的科技和卓越的实践&#xf…

tencentcloud-sdk-python-iotexplorer、tencent-iot-device、cos-python-sdk-v5有什么用

1. tencent-iot-device tencent-iot-device 是腾讯云提供的物联网设备 SDK&#xff0c;用于在物联网场景中开发和连接设备。这个 SDK 提供了丰富的功能和接口&#xff0c;可以帮助开发者快速构建稳定、高效的物联网应用。 主要功能和特点&#xff1a; 设备连接管理&#xff1…

OpenCV杂记(2):图像拼接(hconcat, vconcat)

OpenCV杂记&#xff08;1&#xff09;&#xff1a;绘制OSD&#xff08;cv::getTextSize, cv::putText&#xff09;https://blog.csdn.net/tecsai/article/details/137872058 1. 简述 做图像处理或计算机视觉技术的同学都知道&#xff0c;我们在工作中会经常遇到需要将两幅图像拼…

Windows之一些常用命令

在 Windows 操作系统上&#xff0c;你可以使用命令行来创建新的文件。以下是几种常用的方法&#xff1a; 使用 echo 命令创建文件&#xff1a; echo. > filename.ext将 filename.ext 替换为你想要创建的文件名和扩展名。例如&#xff0c;要创建一个名为 example.txt 的文本…

IntelliJ-platform plugIn 插件开发专题内容介绍,学习指导(一)

这系列文章出炉对于笔者来说确实不容易&#xff0c;历时快两年了&#xff0c;先后迭代了3版本&#xff0c;暂时与官方最新版本API同步&#xff08;2024.03&#xff09;&#xff0c;文章内容覆盖2022~2024版内容 专题由来 最早接触插件开发是源于公司一个国际化项目&#xff0c…

以pytorch pipeline并行为例,分析各kernel的耗时占比及性能瓶颈

以pytorch pipeline并行为例,分析各kernel的耗时占比及性能瓶颈 1.生成pipeline并行的测试代码2.pipeline profing3.生成nsys2json.py代码4.将nsys sqlite格式转chrome json格式5.生成耗时成分统计代码6.统计耗时成分7.耗时成分如下:8.查看GPU PCIE链路状态9.链路状态如下10.Ns…

js高级 笔记01

01 静态成员和实例成员 构造函数中的属性和方法我们称之为成员 成员是可以添加的 通过构造函数new出来的对象叫做实例化对象 实例成员就是构造函数内部通过this添加的对象 实例成员只能通过实例化对象去访问 不能通过构造函数去访问 静态成员 是在构造函数本身上添加的…

【Xilnx FPGA】 ubuntu20.04 vivado 和vitis找不到zynq设备

参考如何下&#xff0c;ubuntu下需要手动安装驱动&#xff0c;在安装目录下执行sudo ./install_drivers Install Cable Drivers (Linux Only) - Digilent Referencehttps://www.xilinx.com/support/documentation/user_guides/ug344.pdfAMD Customer Community $(DIR)Vivado/…

若依框架在企业级应用开发中的核心作用

随着互联网技术的飞速发展&#xff0c;企业级应用开发面临着日益复杂的需求与挑战。在这样的背景下&#xff0c;高效、稳定且易于维护的开发框架显得尤为重要。其中&#xff0c;若依&#xff08;RuoYi&#xff09;作为一款备受开发者青睐的Java快速开发平台&#xff0c;以其强大…

Unity地形关联出错的解决办法以及地形深度拷贝

问题 最近发现unity地形系统的一个bug&#xff0c;导入的场景地形数据关联错乱了&#xff0c;关联到别的场景的地形数据了&#xff0c;meta替换了也没用&#xff0c;不清楚它具体是怎么关联的。 看下面的案例&#xff1a; 可以看到正常这个场景的地形数据应该关联的是Scene_E…

自动驾驶---低速场景之记忆泊车

1 背景 随着笔者行车功能Planning模块第一阶段的内容基本完结,后续主要针对Planning模块的细节,补充知识,其它模块或者低速功能作介绍。因此和大家先聊一聊低速场景下的记忆泊车,如此一来,整体覆盖了点到点自动驾驶的所有环节。 最开始量产记忆泊车(Auto Valet Paking)的…

重要的事说100遍

直接用SQL大面积修改生产数据库数据先备份! 直接用SQL大面积修改生产数据库数据先备份! 直接用SQL大面积修改生产数据库数据先备份! 直接用SQL大面积修改生产数据库数据先备份! 直接用SQL大面积修改生产数据库数据先备份! 直接用SQL大面积修改生产数据库数据先备份! 直接用SQL大…

gma 2 用户文档(pdf版)更新计划

随着 gma 2 整体构建完成&#xff0c;下一步继续针对库内所有功能完成一个用户指南&#xff08;非网站&#xff09;。相较于上次更新用户文档pdf版&#xff0c;已经过去了大半年。当然&#xff0c;PDF 版比网站上内容更丰富&#xff0c;也更新&#xff08;文档基于 gma 2.0.9a2…

【Java】集合概念及多线程

HashSet 、 LinkedHashSet 和 TreeSet 的主要区别在于底层数据结构不同。 HashSet 的底层数据结构是哈希表&#xff08;基于 HashMap 实现&#xff09;。 LinkedHashSet 的底层数据结构是链表和哈希表&#xff0c;元素的插⼊和取出顺序满⾜ FIFO。 TreeSet 底层数据结构是红…