Kotlin Set接口

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集合的查询操作主要有判断集合是否为空、获取集合中元素的数量、判断集合中是否包含某一个元素以及返回集合中的元素的迭代器,如表所示。
Kotlin 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集合。

酷客教程相关文章:

赞(0)

评论 抢沙发

评论前必须登录!