目录

Set

不可变集

可变集


Set

Set(集)是代表没有重复元素的集合。Set具备以下性质:

元素不重复

不保证插入顺序

和List正好相反, List:

元素可以重复

保证插入顺序

scala中的集也分为两种,一种是不可变集,另一种是可变集。

不可变集

定义

语法

创建一个空的不可变集,语法格式:

val/var 变量名 = Set[类型]()

给定元素来创建一个不可变集,语法格式:

val/var 变量名 = Set(元素1, 元素2, 元素3...)

示例一

定义一个空的不可变集

参考代码

scala> val a = Set[Int]()
a: scala.collection.immutable.Set[Int] = Set()

示例二

定义一个不可变集,保存以下元素:1,1,3,2,4,8

参考代码

scala> val a = Set(1,1,3,2,5,9)
a: scala.collection.immutable.Set[Int] = Set(1, 2, 3, 9, 5)
// 可以看到 1. 去重了 2. 顺序乱了   这些就是Set的特性

基本操作

  • 获取集的大小(size)
  • 遍历集(和遍历数组一致)
  • 添加一个元素,生成一个Set(+)
  • 拼接两个集,生成一个Set(++)
  • 拼接集和列表,生成一个Set(++)

示例

创建一个集,包含以下元素:1,1,2,3,4,5

获取集的大小

遍历集,打印每个元素

删除元素1,生成新的集

拼接另一个集(6, 7, 8)

拼接一个列表(6,7,8, 9)

参考代码

// 创建集
scala> val a = Set(1,1,2,3,4,5)
a: scala.collection.immutable.Set[Int] = Set(5, 1, 2, 3, 4)// 获取集的大小
scala> a.size
res0: Int = 5// 遍历集
scala> for(i <- a) println(i)// 删除一个元素
scala> a - 1
res5: scala.collection.immutable.Set[Int] = Set(5, 2, 3, 4)// 拼接两个集
scala> a ++ Set(6,7,8)
res2: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 2, 7, 3, 8, 4)// 拼接集和列表
scala> a ++ List(6,7,8,9)
res6: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 9, 2, 7, 3, 8, 4)// 注意, 每次对a的操作, 都是生成了一个新的Set, a自身是不会变化的. 不仅仅指a是不可变集, 同时a 也是val定义的
// 如果是var 定义的
scala> var a = Set(1, 2, 3, 4, 5)
a: scala.collection.immutable.Set[Int] = Set(5, 1, 2, 3, 4)scala> a = a + 6
a: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 2, 3, 4)scala> a
res13: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 2, 3, 4)
// 实际上a 虽然+ 1了 ,但是操作前后的两个a 不是同一个对象.
// Set是不可变的, 如果+1 就是生成了新的Set ,同时因为a是var定义的, 所以就可以重新将这个新生成的结果赋值给a, 原本a的内容就抛弃了.

可变集

定义

可变集合不可变集的创建方式一致,只不过需要提前导入一个可变集类。

手动导入:import scala.collection.mutable.Set

示例

定义一个可变集,包含以下元素: 1,2,3, 4

添加元素5到可变集中

从可变集中移除元素1

参考代码

scala> val a = Set(1,2,3,4)
a: scala.collection.mutable.Set[Int] = Set(1, 2, 3, 4)                          // 添加元素
scala> a += 5
res25: a.type = Set(1, 5, 2, 3, 4)// 删除元素
scala> a -= 1
res26: a.type = Set(5, 2, 3, 4)

2021年大数据常用语言Scala(十七):基础语法学习 Set相关推荐

  1. 2021年大数据常用语言Scala(四):基础语法学习 声明变量

    目录 声明变量 语法格式 在解释器中定义一个变量 val和var变量 使用类型推断来定义变量 惰性赋值 声明变量 我们将来每一天编写scala程序都会定义变量.那scala语言如何定义变量呢? 语法格 ...

  2. 2021年大数据常用语言Scala(三十一):scala面向对象 特质(trait)

    目录 特质(trait) 作为接口使用 定义具体的方法 定义具体方法和抽象方法 定义具体的字段和抽象的字段 实例对象混入trait trait调用链 trait的构造机制 trait继承class 特 ...

  3. 2021年大数据常用语言Scala(十四):基础语法学习 数组  重点掌握

    目录 数组  重点掌握 定长数组 变长数组 遍历数组 数组常用算法 数组  重点掌握 scala中数组的概念是和Java类似,可以用数组来存放一组数据.scala中,有两种数组,一种是定长数组,另一种 ...

  4. 2021年大数据常用语言Scala(一):Scala简介

    目录 一.Scala简介 为什么使用scala Scala对比Java 案例 一.Scala简介 scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程 多范式:就是包含多种编程思 ...

  5. 2021年大数据常用语言Scala(二十七):函数式编程 聚合操作

    目录 聚合操作 聚合  reduce 定义 案例 折叠  fold 定义 案例 聚合操作 聚合操作,可以将一个列表中的数据合并为一个.这种操作经常用来统计分析中 聚合  reduce reduce表示 ...

  6. 2021年大数据常用语言Scala(三十七):scala高级用法 高阶函数用法

    目录 高阶函数用法 作为值的函数 匿名函数 柯里化(多参数列表) 闭包 高阶函数用法 Scala 混合了面向对象和函数式的特性,在函数式编程语言中,函数是"头等公民",它和Int. ...

  7. 2021年大数据常用语言Scala(十六):基础语法学习 列表 List 重点掌握

    目录 列表 List 重点掌握 不可变列表定义 可变列表 列表常用操作 列表 List 重点掌握 列表是scala中最重要的.也是最常用的数据结构.List具备以下性质: 可以保存重复的值 有先后顺序 ...

  8. 2021年大数据常用语言Scala(三十八):scala高级用法 隐式转换和隐式参数

    目录 隐式转换和隐式参数 隐式转换 自动导入隐式转换方法 隐式转换的时机 隐式参数 隐式转换和隐式参数 隐式转换和隐式参数是scala非常有特色的功能,也是Java等其他编程语言没有的功能.我们可以很 ...

  9. 2021年大数据常用语言Scala(三十六):scala高级用法 泛型

    目录 泛型 定义一个泛型方法 定义一个泛型类 上下界 协变.逆变.非变 非变 协变 逆变 泛型 scala和Java一样,类和特质.方法都可以支持泛型.我们在学习集合的时候,一般都会涉及到泛型. sc ...

最新文章

  1. 深度学习:dropout和BN的实现
  2. 防止UI界面被输入法遮挡(画面随输入法自适应)
  3. pthread_join/pthread_exit用法实例
  4. Android逆向笔记-4种方式破解下例中的smali代码
  5. kali怎么新建文本_macOS 开发之 NSTextField 支持文本快捷键(一): 基本操作
  6. 为什么 Deno 没有众望所归?超越 Node.js 还要做些什么?
  7. explain如何查看mysql_MySQL(九)|如何查看执行计划(Explain)
  8. linux配置https站点
  9. 基于安卓/android/微信小程序的个人健康打卡系统APP-#计算机毕业设计
  10. 霍尔在光伏发电系统中的应用与产品选型
  11. Android编码架构MVx演进历史
  12. 分立式数码管循环显示数字0到9.
  13. 2017京东春招实习生招聘编程题
  14. 如何添加共享计算机用户,如何正确设置共享
  15. 小蚁4K运动相机实现APP通过路由器连接控制拍照
  16. 键盘突然失灵?VS调试时按F10F11F12都突然没反应?打数字0(ins)时出不来就像按鼠标右键一样?
  17. Tars-C++服务的CI/CD
  18. 什么是冒烟测试?冒烟测试的意义
  19. EBS Form开发中LOV和Editor介绍
  20. git_v1.txt

热门文章

  1. OpenFeign服务接口调用
  2. SSM框架整合(Spring+SpringMVC+MyBatis)
  3. 面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?
  4. LeetCode中等题之两两交换链表中的节点
  5. 人工智能:深层神经网络
  6. Python:从零搭建Redis-Scrapy分布式爬虫
  7. java线程触发_java线程
  8. python random 随机生成一个数
  9. RecyclerView 点击Item 改变文字颜色以及所在的背景色
  10. Java成员变量与成员方法