Scala中的set集

8 阅读2分钟

内容:

1.Set的定义;

2.Set的代码格式;

3.不可变与可变Set;

4.Set常用方法。

Set的定义

Set,集合。表示没有重复元素的集合,特点是:唯一,无序。

Set 有可变(mutable)和不可变(immutable)两种类型。不可变 Set 创建后元素不能修改,可变 Set 可对元素进行添加、删除等操作,这两种类型能满足不同场景需求。

Set的代码格式

语法格式 val 变量名 = Set[类型](元素1,元素2...)

代码如下:

package Set
import scala.collection.immutable.Set
object set01 {
  def main(args: Array[String]): Unit = {
    //定义一个set
    val set1 = Set("apple","grape","apple","pear")
    
    println(set1)
  }
}

不可变与可变 Set 的区别

代码如下:

package Set
/*
 * 可变(mutable),不可变(immutable)
 *    可变:自己的内容可以直接修改
 *    不可变:自己的内容定义好了就无法添加,不能删除
 * 默认情况下set是不可变的
 *
 * set 是内置对象,可以不需要impact
 * */
object set01 {
  def main(args: Array[String]): Unit = {
    //定义一个set
    //分可变的和不可变的

    //可变的set
    val set1 = scala.collection.mutable.Set("apple","grape","apple","pear")
    set1 += "banana"
    println(set1)

    //不可变的set
    val set2 = scala.collection.immutable.Set("Apple","Banana")
    //不可变的若想要添加新的,需要重新定义一个
    // set2 += "pear" 报错
    var newset2 = set2 + "pear"
    println(newset2)
  }
}

Set常见操作

set的操作

  • 1,添加元素
  • 2,删除元素
  • 3,查询元素是否存在
  • 4,合并set
  • 5,交集
  • 6,差集

以上六种操作方法

详细代码如下:

package Set
/**
 * set的操作
 * 1,添加元素
 * 2,删除元素
 * 3,查询元素是否存在
 * 4,合并set
 * 5,交集
 * 6,差集
 * */
object set02 {
  def main(args: Array[String]): Unit = {
    val res1 = scala.collection.mutable.Set("Apple", "grape", "apple", "oppo")
    //1,添加元素
    res1 += "banana"

    //2,删除元素
    res1 -= "apple"

    //3,查询元素是否存在 contains 它返回一个Bool值
    if (res1.contains("Apple")) {
      println("Apple 存在")
    }

    //4,合并set union 返回一个新的set
    val res2 = scala.collection.mutable.Set("orange")

    val res3 = res1.union(res2)
    println(res3)

    //5,交集
    val hobby1 = scala.collection.mutable.Set("看书", "听歌")
    val hobby2 = scala.collection.mutable.Set("打球", "看书")
    //求交集
    val rst = hobby1.intersect(hobby2)
    println(rst)

    //6,差集:一个set中有,而另一个没有.
    val classes1 = scala.collection.mutable.Set("语文", "历史", "政治")
    val classes2 = scala.collection.mutable.Set("历史", "英语", "物理")
    val rst1 = classes2.diff(classes1)
    println(rst1)
  }
}