Scala 集合:Set API

栏目: Scala · 发布时间: 5年前

内容简介:Set 用于表示一个不包含重复元素的集合,不强调元素的顺序性。Set 同样被定义为是一个特质类型,区分可变与不可变,定义如下:函数示例:

Set 用于表示一个不包含重复元素的集合,不强调元素的顺序性。Set 同样被定义为是一个特质类型,区分可变与不可变,定义如下:

trait Set[A] extends (A => Boolean)
                with Iterable[A]
                with GenSet[A]
                with GenericSetTemplate[A, Set]
                with SetLike[A, Set[A]]

一. 插入操作

1.1 +

函数 + 用于往 Set 对象中添加一个或多个元素,其定义如下:

def + (elem: A): This
def + (elem1: A, elem2: A, elems: A*): This = this + elem1 + elem2 ++ elems

示例:

val set = Set(1, 2, 3)
set + 4 // 输出:Set(1, 2, 3, 4)
set + (4, 5) // 输出:Set(5, 1, 2, 3, 4)

1.2 ++ & ++:

函数 ++ 接收一个 GenTraversableOnce 类型的参数,只要是继承自 GenTraversableOnce 的集合都可以作为参数,函数会将参数中所包含的元素添加到原 Set 对象中,并创建一个新的 Set 对象返回。示例:

val set = Set(1, 2, 3)
set ++ Seq(4, 5) // 输出:Set(5, 1, 2, 3, 4)
set ++: Seq(4, 5) // 输出:List(1, 2, 3, 4, 5)

函数 ++: 相对于 ++ 的区别在于右结合,所以上面的示例对应的结果类型是 List。

1.3 += & ++= & add

对于可变集合而言,可以实现原地插入,函数 += 对标 + ,而 ++= 则对标 ++ ,示例:

val mset = mutable.Set(1, 2, 3)
mset += 4
mset += (5, 6)
mset // 输出:Set(1, 5, 2, 6, 3, 4)
mset ++= Set(7, 8)
mset // 输出:Set(1, 5, 2, 6, 3, 7, 4, 8)

函数 add 同样适用于可变 Set 对象,用于往 Set 对象中添加单个元素,如果 Set 中已经包含该元素则返回 false,否则返回 true。示例:

val mset = mutable.Set(1, 2, 3)
mset.add(3) // 输出:false
mset.add(4) // 输出:true

二. 更新操作

2.1 update

对于可变集合来说,函数 update 用于更新集合中的元素(定义如下),其中参数 elem 对应需要更新的元素值,而参数 included 则用于指定是添加( included = true )还是删除( included = false )。

def update(elem: A, included: Boolean)

示例:

val set = mutable.Set(1, 2, 3)
set.update(0, included = true)
set // 输出:Set(0, 1, 2, 3)
set.update(0, included = false)
set // 输出:Set(1, 2, 3)

其中 set.update(0, included = true) 可以简写为 set(0) = trueset.update(0, included = false) 可以简写为 set(0) = false

三. 删除操作

3.1 - & --

函数 - 用于从 Set 对象中移除一个或多个元素,而函数 -- 则接收一个 GenTraversableOnce 类型参数,只要是继承自 GenTraversableOnce 的集合都可以作为参数,函数会从原 Set 对象中移除参数集合中所包含的元素。示例:

val set = Set(1 to 9: _*)
set - 1 // 输出:Set(5, 6, 9, 2, 7, 3, 8, 4)
set - (9, 8) // 输出:Set(5, 1, 6, 2, 7, 3, 4)
set -- Seq(7, 6) // 输出:Set(5, 1, 9, 2, 3, 8, 4)

3.2 -= & --=

对于可变集合而言,可以实现原地删除,函数 -= 对标 - ,而 --= 则对标 -- ,示例:

val mset = mutable.Set(1 to 9: _*)
mset -= 1
mset -= (9, 8)
mset // 输出:Set(5, 2, 6, 3, 7, 4)
mset --= Seq(7, 6)
mset // 输出:Set(5, 2, 3, 4)

3.3 remove & retain & clear

函数 remove 用于从 Set 中移除单个元素,如果对应的元素存在则返回 true,否则返回 false;函数 retain 接收一个谓词 A => Boolean ,用于移除所有不满足条件的元素;函数 clear 则用于清空所有元素。示例:

val mset = mutable.Set(1 to 9: _*)
mset.remove(1) // 输出:true
mset.remove(1) // 输出:false
mset.retain(_ % 2 == 0)
mset // 输出:Set(2, 6, 4, 8)
mset.clear()
mset // 输出:Set()

四. 包含检查

4.1 contains & apply

函数 contains 用于检查 Set 对象中是否包含指定的元素,这是一个从父特质继承而来的方法,对于 Set 来说,可以使用 apply 函数检查是否包含指定元素,同样,函数 apply 可以使用 () 简写。示例:

val set = Set(1, 2, 3)
set.contains(2) // 输出:true
set.apply(5) // 输出:false
set(5) // 输出:false

4.2 subsetOf

函数 subsetOf 用于检查当前 Set 对象是否是参数给定的 Set 的子集,示例:

val set = Set(1, 2, 3)
set.subsetOf(Set(1, 2, 3, 4)) // 输出:true
set.subsetOf(Set(1, 2)) // 输出:false

五. 集合操作

5.1 intersect & &

函数 intersect 用于对于两个 Set 对象求 交集 ,也可以简写为 & ,示例:

val set1 = Set(1, 2, 3)
val set2 = Set(3, 4, 5)
set1.intersect(set2) // 输出:Set(3)
set1 & set2 // 输出:Set(3)

5.2 union & |

函数 union 用于对于两个 Set 对象求 并集 ,也可以简写为 | ,示例:

val set1 = Set(1, 2, 3)
val set2 = Set(3, 4, 5)
set1.union(set2) // 输出:Set(5, 1, 2, 3, 4)
set1 | set2 // 输出:Set(5, 1, 2, 3, 4)

5.3 diff & &~

函数 diff 用于对两个 Set 对象求 差集 ,也可以简写为 &~ ,示例:

val set1 = Set(1, 2, 3)
val set2 = Set(3, 4, 5)
set1.diff(set2) // 输出:Set(1, 2)
set1 &~ set2 // 输出:Set(1, 2)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Intersectional Internet

The Intersectional Internet

Safiya Umoja Noble、Brendesha M. Tynes / Peter Lang Publishing / 2016

From race, sex, class, and culture, the multidisciplinary field of Internet studies needs theoretical and methodological approaches that allow us to question the organization of social relations that ......一起来看看 《The Intersectional Internet》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具