`

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)

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics