内容简介: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) = true
, set.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)
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Scala 中的集合(二):集合性能比较
- Scala 中的集合(二):集合性能比较
- 《面试知识,工作可待:集合篇》:Java 集合面试知识大全
- 如何对集合对象求合计,然后追加在该集合对象中
- MongoDB指南---14、特殊的索引和集合:固定集合、TTL索引、全文本索引
- Python 集合相关操作
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!