Set接口和List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,但并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。与List接口不同的是,Set接口中的元素是无序的,并且元素不可重复,重复的元素只会被记录一次。
在Kotlin中,Set分为可变集合MutableSet与不可变集合Set,其中可变集合MutableSet是对集合中的元素进行增加和删除的操作,不可变集合Set对集合中的元素仅提供只读的操作。
不可变Set
不可变Set同样是继承了Collection接口,调用标准库中的setOf()函数来创建不可变Set集合,具体代码如下:
val mSet = setOf(1, 8, 9, 1, 4, 7, 9, 0, 0, 8)
println(mSet)
由于Set集合中的元素具有不可重复性,因此上述代码的运行结果如下:
[1, 8,9, 4, 7, 0]
不可变集合Set与不可变集合List类似,都是一个只提供只读操作的集合,并且Set集合中的操作与List集合也类似,Set集合的主要操作有查询操作与批量操作。
查询操作
Set集合的查询操作主要有判断集合是否为空、获取集合中元素的数量、判断集合中是否包含某一个元素以及返回集合中的元素的迭代器,如表所示。
接下来我们通过一个案例来演示上述表中Set集合的查询操作,具体代码如下所示。
package com.itheima.chapter05
fun main(args: Array<String>) {
val set: Set<Int> = setOf(11, 12, 13, 11)
if (set.isEmpty()) {
println(" 集合中没有元素")
return
} else {
println(" 集合中有元素,元素个数为:" + set.size)
}
if (set.contains(11)) {
println(" 集合中包含元素11")
}
val mIndex = set.iterator()
println(" 遍历集合中的所有元素:")
while (mIndex.hasNext()) {
print(mIndex.next().toString() + "\t")
}
}
运行结果:
集合中有元素,元素个数为:3
集合中包含元素11
遍历集合中的所有元素:
12 13
在上述代码中,定义了一个Int类型的Set集合,该集合中包含4个元素“11, 12, 13, 11”
,从运行结果会发现打印的元素个数为3,这是因为Set集合中不允许元素重复,重复的元素只会被记录一次。
批量操作
Set集合中的批量操作的方法只有containsAll(elements:Collection<@UnsafeVariance E>)
,这个方法的含义是判断集合中是否包含某一个集合。接下来我们通过一个案例来演示该批量操作的方法,具体代码如下所示。
package com.itheima.chapter05
fun main(args: Array<String>) {
val set1: Set<Int> = setOf(0, 9, 13)
val set2: Set<Int> = setOf(0, 7, 9, 13)
if (set2.containsAll(set1)) {
println("set2集合包含set1 集合")
}
}
运行结果:
set2集合包含set1集合
注意 Set集合中也可以进行List集合中的索引操作和迭代器操作,由于这两个操作与List集合中内容一样,因此就不再重复写一遍了,大家可以根据List接口中的方法来理解Set集合。
酷客教程相关文章:
评论前必须登录!
注册