zoukankan      html  css  js  c++  java
  • scala(13)-----集合(Collection)-------Set(集合)

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

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

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

    默认引用 scala.collection.immutable.Set,不可变集合实例如下

    val set = Set(1,2,3)
    println(set.getClass.getName) // 
    
    println(set.exists(_ % 2 == 0)) //true
    println(set.drop(1)) //Set(2,3)

    如果需要使用可变集合需要引入 scala.collection.mutable.Set:

    import scala.collection.mutable.Set // 可以在任何地方引入 可变集合
    
    val mutableSet = Set(1,2,3)
    println(mutableSet.getClass.getName) // scala.collection.mutable.HashSet
    
    mutableSet.add(4)
    mutableSet.remove(1)
    mutableSet += 5
    mutableSet -= 2
    
    println(mutableSet) // Set(5, 3, 4)
    
    val another = mutableSet.toSet
    println(another.getClass.getName) // scala.collection.immutable.Set

    注意:虽然可变Set和不可变Set都有添加或删除元素的操作,但是有一个非常大的差别。对不可变Set进行操作,会产生一个新的set,原来的set并没有改变,这与List一样。 而对可变Set进行操作,改变的是该Set本身,与ListBuffer类似。

    集合基本操作

    Scala集合有三个基本操作:

    • head 返回集合第一个元素
    • tail 返回一个集合,包含除了第一元素之外的其他元素
    • isEmpty 在集合为空时返回true

    对于Scala集合的任何操作都可以使用这三个基本操作来表达。实例如下:

    object Test {
       def main(args: Array[String]) {
          val site = Set("Runoob", "Google", "Baidu")
          val nums: Set[Int] = Set()
    
          println( "第一网站是 : " + site.head )
          println( "最后一个网站是 : " + site.tail )
          println( "查看列表 site 是否为空 : " + site.isEmpty )
          println( "查看 nums 是否为空 : " + nums.isEmpty )
       }
    }

    执行以上代码,输出结果为:
    第一网站是 : Runoob
    最后一个网站是 : Set(Google, Baidu)
    查看列表 site 是否为空 : false
    查看 nums 是否为空 : true

    Scala Set(集合)

    Scala 集合 Scala 集合

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

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

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

    默认引用 scala.collection.immutable.Set,不可变集合实例如下:

    val set = Set(1,2,3)
    println(set.getClass.getName) // 
    
    println(set.exists(_ % 2 == 0)) //true
    println(set.drop(1)) //Set(2,3)

    如果需要使用可变集合需要引入 scala.collection.mutable.Set:

    import scala.collection.mutable.Set // 可以在任何地方引入 可变集合
    
    val mutableSet = Set(1,2,3)
    println(mutableSet.getClass.getName) // scala.collection.mutable.HashSet
    
    mutableSet.add(4)
    mutableSet.remove(1)
    mutableSet += 5
    mutableSet -= 2
    
    println(mutableSet) // Set(5, 3, 4)
    
    val another = mutableSet.toSet
    println(another.getClass.getName) // scala.collection.immutable.Set

    注意:虽然可变Set和不可变Set都有添加或删除元素的操作,但是有一个非常大的差别。对不可变Set进行操作,会产生一个新的set,原来的set并没有改变,这与List一样。 而对可变Set进行操作,改变的是该Set本身,与ListBuffer类似。


    集合基本操作

    Scala集合有三个基本操作:

    • head 返回集合第一个元素
    • tail 返回一个集合,包含除了第一元素之外的其他元素
    • isEmpty 在集合为空时返回true

    对于Scala集合的任何操作都可以使用这三个基本操作来表达。实例如下:

    object Test {
       def main(args: Array[String]) {
          val site = Set("Runoob", "Google", "Baidu")
          val nums: Set[Int] = Set()
    
          println( "第一网站是 : " + site.head )
          println( "最后一个网站是 : " + site.tail )
          println( "查看列表 site 是否为空 : " + site.isEmpty )
          println( "查看 nums 是否为空 : " + nums.isEmpty )
       }
    }

    执行以上代码,输出结果为:

    $ vim Test.scala 
    $ scala Test.scala 
    第一网站是 : Runoob
    最后一个网站是 : Set(Google, Baidu)
    查看列表 site 是否为空 : false
    查看 nums 是否为空 : true

    连接集合

    你可以使用 ++ 运算符或 Set.++() 方法来连接两个集合。如果元素有重复的就会移除重复的元素。实例如下:

    object Test {
       def main(args: Array[String]) {
          val site1 = Set("Runoob", "Google", "Baidu")
          val site2 = Set("Faceboook", "Taobao","Baidu")
    
          // ++ 作为运算符使用
          var site = site1 ++ site2
          println( "site1 ++ site2 : " + site )
    
          //  ++ 作为方法使用
          site = site1.++(site2)
          println( "site1.++(site2) : " + site )
       }
    }

    执行以上代码,输出结果为:

    site1 ++ site2 : Set(Faceboook, Taobao, Google, Baidu, Runoob)
    site1.++(site2) : Set(Faceboook, Taobao, Google, Baidu, Runoob)

    查找列表当中最小的元素:

    你可以使用 Set.min 方法来查找集合中的最小元素,使用 Set.max 方法查找集合中的最大元素。实例如下:

    object Test {
       def main(args: Array[String]) {
          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 )
       }
    }


    执行以上代码,输出结果为:

    Set(5,6,9,20,30,45) 集合中的最小元素是 : 5
    Set(5,6,9,20,30,45) 集合中的最大元素是 : 45

    交集

    使用 Set.& 方法或 Set.intersect 方法来查看两个集合的交集元素。实例如下:


    object Test {
       def main(args: Array[String]) {
          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) )
       }
    }

    执行以上代码,输出结果为:

    num1.&(num2) : Set(20, 9)
    num1.intersect(num2) : Set(20, 9)

    Scala Set 常用方法

    下表列出了 Scala Set 常用的方法:


    文章来源:http://www.runoob.com/scala/scala-sets.html



  • 相关阅读:
    软件工程第一次作业(2)
    软件工程第一次作业
    TR111与STUN
    定制自己的ubuntu 镜像文件 (remastersys, respin, USB live CD)
    上层认证的安全协议 __〈无线局域网安全务实:WPA与802.11i〉读书笔记
    接入控制层的安全协议 __〈无线局域网安全务实:WPA与802.11i〉读书笔记
    WEP 协议__<无线局域网安全务实:WPA与802.11i〉读书笔记
    Python re模块中search与match的区别
    python中如何使用shell命令, 及python 与shell 中的变量相互通信
    sed命令简介及在sed命令中使用变量的方法
  • 原文地址:https://www.cnblogs.com/DeepRunning/p/9205959.html
Copyright © 2011-2022 走看看