`

scala学习笔记(四):Set

 
阅读更多

Scala Set(集合)是没有重复的对象集合,所有的元素都是唯一的。

Scala 集合分为可变的和不可变的集合。

默认情况下,Scala 使用的是不可变集合,如果你想使用可变集合,需要引用 scala.collection.mutable.Set

 

 var set = Set("a","b","c")
    //res0: scala.collection.immutable.Set[String] = Set(a, b, c, d) 生成新的Set
    //源码: def + (elem: Any): Set[Any] = new Set1(elem)
    set += "d" //增加 因为是不可变  实际是set = set + "b"
    //源码:
    val set2 = set.drop(1)//减少
    println(set2)
    //a;b;c  set的元素还是原始的
    println(set.getClass.getName +":"+set)

 引入scala.collection.mutable.Set包

 

 

import scala.collection.mutable.Set

    //muSet: scala.collection.mutable.Set[String] = Set(c, a, b)
    //无序Set
    val muSet = Set("a","b","c")
    //res2: scala.collection.mutable.Set[String] = Set(c, d, a, b) 在muSet基础上增加
    //源码: override def + (elem: A): This = clone() += elem
    muSet += "e" // 实际调用的可变Set的+=方法
    println(muSet)
    muSet.add("d")
    muSet.remove("c")
    //c:d:a:b  set的元素已经改变
    println(muSet.getClass.getName +":"+muSet)


    println(muSet.head+ " >>返回列表中的第一个元素")
    println(muSet.last+ " >>返回列表中的最后一个元素")
    println(muSet.init.mkString(",")+ " >>返回除最后一个元素外的所有元素组成的Set")
    println(muSet.tail.mkString(",")+ " >>返回Set中除第一个元素外的所有元素组成的Set")
    println(muSet.size +">>返回Set大小")

 

连接集合

 

//连接集合
    //scala.collection.immutable.Set[String]
    val set0 = Set("a","b","c")
    //scala.collection.immutable.Set[Int]
    val set3 = Set(1,2,3)
    //++ 作为运算符使用
    val set4 = set0 ++ set3
    //scala.collection.immutable.Set[Any]
    println(set4.getClass.getName + ":" + set4)
    // ++ 作为方法使用
    val set5 = set0.++(set3)
    println(set4.getClass.getName + ":" + set5)

 

 

查找集合中最大与最小元素

 

val num = Set(5,6,9,20,30,45)
// 查找集合中最大与最小元素
println( "Set(5,6,9,20,30,45) 集合中的最小元素是 : " + num.min )
println( "Set(5,6,9,20,30,45) 集合中的最大元素是 : " + num.max )

 

 

交集、合并、差集、集合拆分

 

val num1 = Set(5,6,9,20,30,45)
    val num2 = Set(50,60,9,20,35,55)

    // 交集
    println( "num1.&(num2) : " + num1.&(num2) )
    println( "num1.intersect(num2) : " + num1.intersect(num2) )

    //合并 不允许重复
    println("union:" + num1.union(num2))
    //差集 去掉num1在num2中的元素
    println("diff:" + num1.diff(num2))

    //把集合拆分为两个容器,第一个由前 3 个元素组成,第二个由剩下的元素组成
    val num3 = num1.splitAt(3)
    println(num3._1)
    println(num3._2)

 

 

分享到:
评论

相关推荐

    Scala学习笔记(全)

    ### Scala学习笔记(全) #### 一、Scala概述与特点 Scala是一种多范式的编程语言,旨在集成面向对象编程和函数式编程的各种特性。它运行于Java平台(Java虚拟机JVM),并且能够完全兼容所有的Java程序。这使得Scala...

    scala学习笔记整理

    在"scala学习笔记整理"中,我们可以深入探讨以下关键知识点: 1. **基础语法**:Scala的基础语法与Java有相似之处,但也有很多独特的特点。例如,它支持变量的不可变性(immutability),使用`val`声明常量,`var`...

    scala学习资料

    4. 集合库:Scala的集合库设计精良,包含各种高效的数据结构,如List、Set、Map等。这些集合不仅支持传统的OOP操作,还提供了丰富的函数式API,如map、filter、fold等,方便进行数据处理。 5. 特性与模式匹配:...

    scala-learn:scala学习笔记

    本教程“scala-learn:scala学习笔记”旨在帮助初学者深入理解Scala的基础知识,同时也为有经验的程序员提供了一个复习和提升的平台。 1. **基础语法与数据类型** Scala的基础语法简洁而强大,包括变量声明(val和...

    scala学习笔记

    - **集合框架**:Scala 提供了强大的集合框架,包括不可变集合(如 `Set` 和 `Map`)和可变集合(如 `ArrayBuffer`)。 ### 5. 类与对象 - **类与对象定义**:Scala 支持面向对象编程,可以定义类和对象,并实现...

    scala的操作笔记

    ### Scala的操作笔记 #### 一、课程目标与学习路径 本课程旨在通过三个阶段的目标来逐步深入学习Scala语言,最终能够灵活运用Scala进行Spark程序的开发,并具备阅读Spark内核源码的能力。 - **初级目标**:掌握...

    scala笔记:学习scala时的笔记

    - Scala的集合库是其强大之处,提供了一组高性能的集合实现,如List, Set, Map和ArrayBuffer。 - 支持惰性求值的集合,如Stream和View,能有效提高性能。 - 集合操作如`flatMap`, `map`, `filter`等是函数式编程...

    Scala-Tutorial:Scala语法学习笔记与程式码范例from 韩顺平老师教学

    Scala是一种多范式的编程语言,它融合了面向对象和函数式编程的概念,旨在提供一种简洁、类型安全且高性能的...通过学习,你可以熟练掌握Scala语言,应用于大数据处理、分布式计算以及构建高并发、高可用的应用系统。

    Scala_day01_scala_

    "Scala_day01_scala_" 的标题暗示了这是一份针对初学者的Scala学习资料,旨在帮助新接触者快速入门。下面,我们将深入探讨Scala的一些核心概念和特性。 首先,Scala的基础语法与Java类似,但它提供了更简洁的表达...

    快学Scala 第2版.zip

    这本书的中文完整版包含高清扫描和书签功能,使得读者可以轻松查找和学习相关内容,而且文字可选择复制,方便笔记和后续查阅。 Scala在大数据领域扮演着重要角色,主要归功于它与Apache Spark的紧密集成。Spark是一...

    scala_fp_coursera:https的演示

    **Scala FP Coursera课程:深入理解函数式编程** Scala是一种多范式编程语言,...在提供的`scala_fp_coursera-master`压缩包中,可能包含了课程的笔记、代码示例和练习,这些都是深入学习Scala函数式编程的宝贵资源。

    scala-sampler

    Scala 学习 资源/概念 SBT: : Scala:Dean Wampler/Alex Payne,Scala 编程,第 2 版,O'Reilly,2014 笔记 集成开发环境 Scala IDE 4.0 RC1 在 ScalaTest 使用 Scala IDE 4.0 RC1 确保安装了 ScalaTest ...

    Scala笔记Markdown版本(至集合章节)

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,被广泛应用于后端开发。本笔记涵盖了Scala的基础...通过学习,开发者将能够掌握Scala的核心特性和编程技巧,从而更好地利用Scala进行后端开发。

    functional-programming-scala:在Coursera上的Scala专业化中的函数式编程工作已完成

    **标题与描述解析** ...综上所述,这个压缩包文件可能包含了学习者在Coursera上完成Scala函数式编程课程时积累的所有材料,包括代码示例、笔记、项目文件等,这些都是进一步学习和复习函数式编程概念的重要资源。

    scala_learn

    在"scala_learn-master"这个目录下,你可能会找到一系列的Scala教程文件,如`.scala`源代码文件、笔记文档、练习案例等,通过这些资源可以深入学习并实践上述知识点。此外,可能还会有对特定话题如并发、网络编程或...

    scala-notes

    "scala-notes"可能是一个关于Scala编程的学习笔记或者教程集合,而"scala-notes-master"可能代表这是该资料的主目录或者最新版本。 在Scala中,你将学习到以下关键概念: 1. **类型系统**:Scala有强大的静态类型...

    DALC_Scala

    2. **集合库**:Scala 的集合库非常强大,提供了丰富的数据结构(如List、Set、Map)和操作,这对于数据处理至关重要。理解如何高效地使用这些集合对于编写高效的代码至关重要。 3. **Apache Spark**:Scala 通常与...

Global site tag (gtag.js) - Google Analytics