内容简介: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 集合相关操作
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
勇敢新世界‧互聯網罪與罰
許煜、劉細良 / CUP / 2005 / $48
我天天上網數小時,為的是要在節目裡面介紹世界的最新動態,尤其是網絡這個世界本身日新月異的變化。所以我不可能不注意到BT、共享軟件、 Wikipedia、網絡監管等各種影響政治、社會、經濟及文化的重要網絡現象。但是我發現市面上一直沒有一本內容充實全面,資料切時的中文參考書,直到這本《互聯網罪與罰》。而且,最大的驚喜是它易讀好看,簡直就像故事書。 梁文道 鳳凰衛視 《網羅天下......一起来看看 《勇敢新世界‧互聯網罪與罰》 这本书的介绍吧!