Kotlin教程:Set接口(不支持重复元素)

2023年 7月 12日 43.3k 0

Kotlin Set接口是一个通用的无序元素集合,Set接口不支持重复元素。 该接口本质上是不可变的,它的方法支持集合的只读功能。

Set接口使用setOf()函数创建包含元素列表的Set接口对象列表。

Set接口声明

interface Set : Collection (source)

Kotlin

Set接口的属性

属性 描述
abstract val size: Int 它返回集合的大小。

Set接口的属性

Kotlin Set接口有几个功能, 它的一些函数如下列表。

属性 描述
abstract fun contains(element: E): Boolean 它检查此集合中是否存在提及元素。 如果它包含element,则返回true,否则返回false
abstract fun containsAll(elements: Collection): Boolean 它检查此集合中是否存在指定集合的所有提及元素。 如果它包含element,则返回true,否则返回false
abstract fun isEmpty(): Boolean 如果集合为空(不包含元素),则返回true,否则返回false
abstract fun iterator(): Iterator 它返回set对象元素的迭代器。
fun Iterable.all(predicate: (T) -> Boolean): Boolean 如果所有元素与给定谓词匹配,则返回true
fun Iterable.any(): Boolean 如果集合包含至少一个元素,则返回true
fun Iterable.count(predicate: (T) -> Boolean): Int 它返回与给定谓词匹配的元素总数。
fun Iterable.distinct(): List 它返回一个列表,只包含给定集合中的不同元素。
fun Iterable.drop(n: Int): List 它返回一个列表,其中包含除前n个元素之外的所有元素。
fun Iterable.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T 如果索引在当前集合中超出范围,它将返回给定索引处的元素或调用defaultValue函数的结果。
fun Iterable.filter(predicate: (T) -> Boolean): List 它返回一个列表,其中只包含与给定谓词匹配的元素。
fun Iterable.filterIndexed(predicate: (index: Int, T) -> Boolean): List 它返回一个列表,其中只包含与给定谓词匹配的元素。
fun Iterable.filterNot(predicate: (T) -> Boolean): List 它返回一个列表,其中只包含那些与给定谓词不匹配的元素。
fun Iterable.find(predicate: (T) -> Boolean): T? 它返回与给定谓词匹配的第一个元素,如果没有找到这样的元素,则返回null
fun Iterable.findLast(predicate: (T) -> Boolean): T? 它返回与给定谓词匹配的最后一个元素,如果没有找到这样的元素,则返回null
fun Iterable.first(): T 返回第一个元素。
fun Iterable.first(predicate: (T) -> Boolean): T 它返回与给定谓词匹配的第一个元素。
fun Iterable.firstOrnull(): T? 它返回第一个元素,如果collection为空,则返回null
fun Iterable.indexOf(element: T): Int 它返回给定元素的第一个索引,如果元素不包含在集合中,则返回-1
fun Iterable.indexOfFirst(predicate: (T) -> Boolean): Int 它返回与给定谓词匹配的第一个元素的索引,如果该元素不包含在集合中,则返回-1
fun Iterable.indexOfLast(predicate: (T) -> Boolean): Int 它返回与给定谓词匹配的最后一个元素的索引,如果该元素不包含在集合中,则返回-1
infix fun Iterable.intersect(other: Iterable): Set 它返回一个集合,其中包含此集合和给定集合中存在的所有元素。
fun Collection.isNotEmpty(): Boolean 如果不为空,则返回true
fun Iterable.last(): T 它返回最后一个元素。
fun Iterable.last(predicate: (T) -> Boolean): T 它返回与给定谓词匹配的最后一个元素。
fun Iterable.lastIndexOf(element: T): Int 它返回给定元素的最后一个索引,如果集合中不存在元素,则返回-1
fun Iterable.lastOrnull(): T? 它返回集合的最后一个元素,如果集合为空,则返回null
fun Iterable.lastOrnull(predicate: (T) -> Boolean): T? 它在匹配给定谓词后返回最后一个元素,如果在集合中找不到这样的元素,则返回null
fun Iterable.max(): T? 它返回最大的元素,如果集合中没有元素,则返回null
fun Iterable.maxBy(selector: (T) -> R): T? 它返回第一个产生给定函数最大值的元素,如果集合中没有元素,则返回null
fun Iterable.min(): T? 它返回最小的元素,如果集合中没有元素,则返回null
fun Iterable.minBy(selector: (T) -> R): T? 它返回给定函数的最小值的第一个元素,如果没有元素则返回null
operator fun Set.minus(element: T): Set 它返回一个包含原始集的所有元素的集合,除了那些给定的元素外。
operator fun Set.minus(elements: Iterable): Set 它返回一个包含原始集合的所有元素的集合,除了那些给定的元素集合外。
operator fun Iterable.minus(element: T): List 它返回一个列表,其中包含原始集合的所有元素,但给定的元素数组中包含的元素除外。
fun Set.minusElement(element: T): Set 它返回一个包含原始集的所有元素的集合,除了那些给定的元素外。
fun Iterable.minusElement(element: T): List 它返回一个列表,其中包含原始集合的所有元素,但第一次出现的是给定元素。
operator fun Set.plus(element: T): Set 它返回一组原始集合的所有元素以及给定元素(如果它尚未存在于集合中)。
operator fun Set.plus(elements: Iterable): Set 它返回一个集合,其中包含原始集合的所有元素以及集合中尚未存在的给定元素集合。 返回的集合是以与原始集合相同的顺序保留元素的迭代。
operator fun Iterable.plus(element: T): List 它返回一个列表,其中包含原始集合的所有元素以及给定的元素。
fun Set.plusElement(element: T): Set 它返回一个集合,其中包含原始集合的所有元素以及给定元素。
fun Iterable.plusElement(element: T): List 它返回一个列表,其中包含原始集合的所有元素以及给定的元素。
fun Iterable.reversed(): List 它以相反的顺序返回包含元素的列表。
fun Iterable.single(): T 它返回单个元素,或者如果集合有多个元素或为空,则抛出异常。
fun Iterable.singleOrnull(): T? 它返回单个元素,如果集合有多个元素或者为空,则返回null

Kotlin Set接口示例1

首先使用setOf()函数声明和遍历set元素的示例。 在这个例子中,创建了一组Int类型非泛型和另一个泛型的Any类型集。示例 -

fun main(args: Array){
    val intSet = setOf(12,16,24,29,4,5)
    val mySet: Set = setOf(12,16,24,29,4,5,"Java","Ajax")
    println(".......print Int set.........")
    for(element in intSet){
        println(element)
    }
    println(".......print Any set.........")
    for(element in mySet){
        println(element)
    }

}

Kotlin

执行上面示例代码,得到以下结果 -

.......print Int set.........
12
16
24
29
4
5
.......print Any set.........
12
16
24
29
4
5
Java
Ajax

Shell

在上面的例子中,在intSetmySet中都声明了元素24两次,但在遍历它们时,它们只打印元素24一次。 这是因为set接口不支持重复元素。

Kotlin Set接口示例2 - contains() 和 containsAll()函数

contains()函数检查给定元素是否存在于当前集合中。 如果它包含在集合中,则返回true,否则返回false。 而containsAll()函数检查集合类型的所有元素是否存在于当前集合中。 如果集合包含集合类型的所有元素,则返回true,否则返回false

fun main(args: Array){
    val mySet: Set = setOf(2,6,4,29,5,"Ajax","Java")
    val intSet = setOf(6,4,29)
    println(".......print Any set.........")
    for(element in mySet){
        println(element)
    }
    println("...mySet.contains\"Java\"...")
    println(mySet.contains("Java"))
    println("...mySet.contains(20)...")
    println(mySet.contains(20))
    println("...mySet.containsAll(intSet)...")
    println(mySet.containsAll(intSet))

}

Kotlin

执行上面示例代码,得到以下结果 -

.......print Any set.........
2
6
4
29
5
Ajax
Java
...mySet.contains"Java"...
true
...mySet.contains(20)...
false
...mySet.containsAll(intSet)...
true

Shell

Kotlin Set接口示例3 - isEmpty() 和 isNotEmpty() 函数

isEmpty()函数检查当前set是否为空。 如果set为空,则isEmpty()函数返回true,否则返回false。 并且isNotEmpty()检查当前set是否为空。 如果set不为空,则isNotEmpty()函数返回true,否则返回false

fun main(args: Array){
    val mySet: Set = setOf(2,6,4,29,5,"Ajax","Java")

    println(".......print Any set.........")
    for(element in mySet){
        var element1:String = element.toString();
        print(element1+",")
    }
    println();
    println("...mySet.isEmpty()...")
    println(mySet.isEmpty())

    println("...mySet.isNotEmpty()...")
    println(mySet.isNotEmpty())

}

Kotlin

执行上面示例代码,得到以下结果 -

.......print Any set.........
2,6,4,29,5,Ajax,Java,
...mySet.isEmpty()...
false
...mySet.isNotEmpty()...
true

Shell

Kotlin Set接口示例4 - drop()函数

drop()函数返回除集合的前n个元素之外的所有元素。

fun main(args: Array){
    val mySet: Set = setOf(2,6,4,29,5,"Ajax","Java")

    println(".......print Any set.........")
    for(element in mySet){
        println(element)
    }
    val remainList= mySet.drop(4)
    println(".......print Set after mySet.drop(4).........")
    for(element in remainList){
        println(element)
    }

}

Kotlin

执行上面示例代码,得到以下结果 -

.......print Any set.........
2
6
4
29
5
Ajax
Java
.......print Set after mySet.drop(4).........
5
Ajax
Java

Shell

Kotlin Set接口示例5 - elementAt() 和 elementAtOrNull()函数

elementAt()函数返回给定索引处的元素,而elementAtOrNull()函数也返回给定索引处的元素,但如果指定的索引不包含元素,则返回null

fun main(args: Array){
    val mySet: Set = setOf(2,6,4,29,5,"Ajax","Java")

    println(".......print Any set.........")
    for(element in mySet){
        println(element)
    }

    println(".......print mySet.elementAt(3).........")
    println(mySet.elementAt(3))

    println(".......print mySet.elementAtOrNull(5).........")
    println(mySet.elementAtOrNull(5))
    println(".......print mySet.elementAtOrNull(50).........")
    println(mySet.elementAtOrNull(50))
}

Kotlin

执行上面示例代码,得到以下结果 -

.......print Any set.........
2
6
4
29
5
Ajax
Java
.......print mySet.elementAt(3).........
29
.......print mySet.elementAtOrNull(5).........
Ajax
.......print mySet.elementAtOrNull(50).........
null

//原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/kotlin/kotlin-set.html#article-start

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论