当前位置: 首页 > news >正文

3 scala集合-Set

与 Java 的 Set 一样,scala 的 set 中,元素都是唯一的,而且遍历 set 中集合的顺序,跟元素插入的顺序是不一样的。

同样,Set 也包含可变和不可变两种。要实现可变 Set 集合,需要使用类 scala.collection.mutable.Set

1 不可变 Set

创建不可变 Set 的语法如下:

// 创建一个不可变 Set
val/var variable_name = Set[类型]()
// 创建一个带初始化元素的不可变 Set
val/var variable_name = Set[类型](ele1, ele2, ele3, ...)

创建一个不可变 Set 集合

scala> val set = Set("Hello", "Scala", "Java", "JVM", "USA", "China")
val set: Set[String] = HashSet(JVM, USA, Scala, China, Hello, Java)

2 可变 Set

2.1 添加新元素到 Set

下面例子,定义了一个可变 Set,并添加新的元素到集合中:

scala> import scala.collection.mutable.Setscala> val set = Set[String]("Hello", "Scala", "And", "Java", "!!!")
val set: scala.collection.mutable.Set[String] = HashSet(!!!, Java, Hello, And, Scala)scala> set += "Spark"
val res1: scala.collection.mutable.Set[String] = HashSet(!!!, Java, Hello, And, Scala, Spark)

2.2 移除其中一个元素

下面例子,定义了一个可变 Set 集合,并移除其中的一个元素:

scala> val set = Set("Hadoop", "Hive", "Spark", "Flink")
val set: scala.collection.mutable.Set[String] = HashSet(Hive, Spark, Flink, Hadoop)scala> set -= "Hadoop"
val res2: scala.collection.mutable.Set[String] = HashSet(Hive, Spark, Flink)

3 Set 常用操作

3.1 获取 Set 大小

通过 size 属性,可以获取 Set 集合包含的元素个数:

scala> import scala.collection.mutable.Setscala> val set = Set("Hadoop", "Hive", "Spark", "Flink")
val set: scala.collection.mutable.Set[String] = HashSet(Hive, Spark, Flink, Hadoop)scala> set.size
val res3: Int = 4

3.2 遍历 Set

与数组一样,使用 for 循环就可以遍历 Set:

scala> import scala.collection.mutable.Setscala> val set = Set("Hadoop", "Hive", "Spark", "Flink")
val set: scala.collection.mutable.Set[String] = HashSet(Hive, Spark, Flink, Hadoop)scala> for(i <- set)|    println(i)|
Hive
Spark
Flink
Hadoop

3.3 添加一个元素,生成一个新 Set

使用运算符 +,可以添加一个元素,并把结果生成一个新的 Set 集合对象:

scala> import scala.collection.mutable.Setscala> val set = Set("Hadoop", "Hive", "Spark", "Flink")
val set: scala.collection.mutable.Set[String] = HashSet(Hive, Spark, Flink, Hadoop)scala> val set1 = set + "Yarn"
val set1: scala.collection.mutable.Set[String] = HashSet(Hive, Spark, Yarn, Flink, Hadoop)scala> set1
val res4: scala.collection.mutable.Set[String] = HashSet(Hive, Spark, Yarn, Flink, Hadoop)scala> set
val res5: scala.collection.mutable.Set[String] = HashSet(Hive, Spark, Flink, Hadoop)

3.4 拼接集合

使用运算符 ++ 可以拼接两个 Set 集合,并生成新的 Set 集合:

scala> import scala.collection.mutable.Setscala> val set = Set("Hdfs", "Hadoop")
val set: scala.collection.mutable.Set[String] = HashSet(Hdfs, Hadoop)scala> val set1 = Set("Hadoop", "Yarn")
val set1: scala.collection.mutable.Set[String] = HashSet(Yarn, Hadoop)scala> val setCombined = set ++ set1
val setCombined: scala.collection.mutable.Set[String] = HashSet(Hdfs, Yarn, Hadoop)

除了拼接 Set 集合外,还可以拼接一个 Set 集合和一个 List 集合:

scala> import scala.collection.mutable.Setscala> val set = Set("Hdfs", "Hadoop")
val set: scala.collection.mutable.Set[String] = HashSet(Hdfs, Hadoop)scala> val list = List("Hadoop", "Yarn")
val list: List[String] = List(Hadoop, Yarn)scala> val setCombined = set ++ list
val setCombined: scala.collection.mutable.Set[String] = HashSet(Hadoop, Hdfs, Yarn)

相关文章:

  • Hive3.1.2——企业级调优
  • 如何用 npm 运行本地 js 文件
  • 山脉的个数/攀登者
  • 二叉树-------前,中,后序遍历 + 前,中,后序查找+删除节点 (java详解)
  • Stream流学习笔记
  • openJudge | 过滤多余的空格 C语言
  • Leetcode29:两数相除
  • 【python之美】减少人工成本之批量拿取文件名保存_4
  • Rust的Match语句:强大的控制流运算符
  • Gin 中使用 base64Captcha 生成图形验证码
  • flask+python高校学生综合测评管理系统 phl8b
  • 1.JavaScript中的数据类型
  • 小白学习Halcon100例:如何利用动态阈值分割图像进行PCB印刷缺陷检测?
  • DolphinScheduler安装与配置
  • 《零基础实践深度学习》波士顿房价预测任务1.3.3.4训练过程
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • C# 免费离线人脸识别 2.0 Demo
  • Git学习与使用心得(1)—— 初始化
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • PAT A1050
  • RxJS: 简单入门
  • spring-boot List转Page
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 两列自适应布局方案整理
  • 聊聊sentinel的DegradeSlot
  • 嵌入式文件系统
  • 如何利用MongoDB打造TOP榜小程序
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 我是如何设计 Upload 上传组件的
  • 06-01 点餐小程序前台界面搭建
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • #Linux(权限管理)
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (2015)JS ES6 必知的十个 特性
  • (42)STM32——LCD显示屏实验笔记
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (python)数据结构---字典
  • (第一天)包装对象、作用域、创建对象
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)人的集合论——移山之道
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET CLR基本术语
  • .NET Micro Framework 4.2 beta 源码探析
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • @Autowired @Resource @Qualifier的区别
  • [ C++ ] STL---string类的使用指南
  • [BZOJ2850]巧克力王国
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [C#]使用PaddleInference图片旋转四种角度检测