个性化阅读
专注于IT技术分析

Kotlin set接口

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

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

set接口声明

interface Set<out E> : Collection<E> (source)

set界面的属性

属性 描述
抽象值大小:整数 它返回集合的大小。

设定界面的功能

Kotlin Set界面具有多种功能。下面将介绍其某些功能。

功能 描述
抽象乐趣contains(e:E):布尔 它检查此集合中是否存在提及元素。如果包含element, 则返回true, 否则返回false。
抽象乐趣containsAll(elements:Collection <E>):布尔值 它检查指定集合中所有提及的元素是否存在于此集合中。如果包含element, 则返回true, 否则返回false。
抽象乐趣isEmpty():布尔值 如果集合为空(不包含任何元素), 则返回true;否则返回false。
抽象乐趣iterator():Iterator <E> 它在set对象的元素上返回一个迭代器。
fun <T>可迭代<T> .all(谓词:(T)->布尔值):布尔值 如果所有元素都与给定谓词匹配, 则返回true。
fun <T>可迭代<T> .any():布尔值 如果集合包含至少一个元素, 则返回true。
fun <T>可迭代<T> .count(谓词:(T)->布尔值):整数 它返回与给定谓词匹配的元素总数。
有趣的<T> Iterable <T> .distinct():列表<T> 它返回一个列表, 其中仅包含给定集合中的不同元素。
fun <T>可迭代的<T> .drop(n:Int):列表<T> 它返回一个列表, 其中包含除前n个元素外的所有元素。
有趣的<T> Iterable <T> .elementAtOrElse(index:Int, defaultValue:(Int)-> T):T 它返回给定索引处的元素, 或者如果索引超出当前集合的范围, 则返回调用defaultValue函数的结果。
fun <T>可迭代<T> .filter(谓词:(T)->布尔值):列表<T> 它返回一个列表, 其中仅包含与给定谓词匹配的那些元素。
fun <T> Iterable <T> .filterIndexed(谓词:(index:Int, T)-> Boolean):List <T> 它返回一个列表, 其中仅包含与给定谓词匹配的那些元素。
有趣的<T> Iterable <T> .filterNot(谓词:(T)->布尔值):列表<T> 它返回一个列表, 其中仅包含与给定谓词不匹配的那些元素。
有趣的<T> Iterable <T> .find(谓词:(T)->布尔值):T? 它返回与给定谓词匹配的第一个元素;如果找不到此类元素, 则返回null。
有趣的<T> Iterable <T> .findLast(谓词:(T)->布尔值):T? 它返回与给定谓词匹配的最后一个元素;如果找不到此类元素, 则返回null。
有趣的<T>可迭代的<T> .first():T 它返回第一个元素。
fun <T>可迭代的<T> .first(谓词:(T)->布尔值):T 它返回与给定谓词匹配的第一个元素。
有趣的<T> Iterable <T> .firstOrnull():T? 它返回第一个元素;如果collection为空, 则返回null。
fun <T>可迭代的<T> .indexOf(element:T):Int 它返回给定元素的第一个索引;如果元素不包含在集合中, 则返回-1。
fun <T>可迭代<T> .indexOfFirst(谓词:(T)-> Boolean):Int 它返回与给定谓词匹配的第一个元素的索引;如果该元素不包含在collection中, 则返回-1。
fun <T> Iterable <T> .indexOfLast(谓词:(T)-> Boolean):Int 它返回与给定谓词匹配的最后一个元素的索引;如果该元素不包含在collection中, 则返回-1。
infix fun <T> Iterable <T> .intersect(其他:Iterable <T>):Set <T> 它返回一个包含该set和给定collection中存在的所有元素的set。
fun <T>集合<T> .isNotEmpty():布尔值 如果不为空, 则返回true。
有趣的<T> Iterable <T> .last():T 它返回最后一个元素。
fun <T>可迭代的<T> .last(谓词:(T)->布尔值):T 它返回与给定谓词匹配的最后一个元素。
有趣的<T> Iterable <T> .lastIndexOf(element:T):Int 它返回给定元素的最后一个索引;如果元素在集合中不存在, 则返回-1。
好玩的<T> Iterable <T> .lastOrnull():T? 它返回collection的最后一个元素;如果collection为空, 则返回null。
有趣的<T> Iterable <T> .lastOrnull(predicate:(T)-> Boolean):T? 它会在匹配给定谓词后返回最后一个元素, 如果在集合中找不到此类元素, 则返回null。
好玩的<T:Comparable <T >> Iterable <T> .max():T? 它返回最大的元素;如果集合中没有元素, 则返回null。
有趣的<T, R:Comparable <R >> Iterable <T> .maxBy(选择器:(T)-> R):T? 它返回产生给定函数最大值的第一个元素, 或者如果集合中没有元素, 则返回null。
好玩的<T:Comparable <T >> Iterable <T> .min():T? 它返回最小的元素;如果集合中没有元素, 则返回null。
有趣的<T, R:Comparable <R >> Iterable <T> .minBy(选择器:(T)-> R):T? 它返回给定函数的最小值的第一个元素;如果没有元素, 则返回null。
运算符fun <T> Set <T> .minus(element:T):Set <T> 它返回一个集合, 其中包含原始集合的所有元素(给定元素除外)。
运算符fun <T> Set <T> .minus(elements:Iterable <T>):Set <T> 它返回一个集合, 其中包含原始集合的所有元素(给定元素集合除外)。
运算符fun <T> Iterable <T> .minus(element:T):List <T> 它返回一个列表, 其中包含原始集合的所有元素, 但给定elements数组中包含的元素除外。
fun <T>set<T> .minusElement(element:T):set<T> 它返回一个集合, 其中包含原始集合的所有元素(给定元素除外)。
fun <T>可迭代的<T> .minusElement(element:T):列表<T> 它返回一个列表, 其中包含原始集合的所有元素, 但给定元素的首次出现除外。
运算符fun <T> Set <T> .plus(element:T):Set <T> 它返回原始集的所有元素的集合以及给定元素(如果集合中尚不存在的话)。
运算符fun <T> Set <T> .plus(elements:Iterable <T>):Set <T> 它返回一个集合, 其中包含原始集合的所有元素以及集合中尚未存在的给定元素集合。返回的集合以与原始集合相同的顺序保留element的迭代。
运算符fun <T> Iterable <T> .plus(element:T):List <T> 它返回一个列表, 其中包含原始集合的所有元素以及给定的元素。
fun <T>set<T> .plusElement(element:T):set<T> 它返回一个集合, 其中包含原始集合的所有元素以及给定的元素。
fun <T>可迭代的<T> .plusElement(element:T):List <T> 它返回一个列表, 其中包含原始集合的所有元素以及给定的元素。
有趣的<T>可迭代<T> .reversed():列表<T> 它返回带有相反顺序元素的列表。
有趣的<T>可迭代的<T> .single():T 它返回单个元素, 如果集合具有多个元素或为空, 则抛出异常。
好玩的<T> Iterable <T> .singleOrnull():T? 它返回一个元素, 如果集合具有多个元素或为空, 则返回null。

Kotlinset界面示例1

让我们创建一个使用setOf()函数声明和遍历set元素的示例。在此示例中, 我们创建了一组非通用的Int类型和另一个Any类型的通用集合。

fun main(args: Array<String>){
    val intSet = setOf(2, 6, 4, 29, 4, 5)
    val mySet: Set<Any> = setOf(2, 6, 4, 29, 4, 5, "Ashu", "Ajay")
    println(".......print Int set.........")
    for(element in intSet){
        println(element)
    }
    println(".......print Any set.........")
    for(element in mySet){
        println(element)
    }

}

输出:

.......print Int set.........
2
6
4
29
5
.......print Any set.........
2
6
4
29
5
Ashu
Ajay

在上面的示例中, 我们在intSet和mySet中都两次声明了元素4, 但是遍历它们时, 它们仅将元素4打印一次。这是因为set接口不支持重复元素。

Kotlinset接口示例2-contains()和containsAll()

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

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

}

输出:

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

Kotlinset接口示例3-isEmpty()和isNotEmpty()

isEmpty()函数检查当前集合是否为空。如果集合为空, 则isEmpty()函数返回true, 否则返回false。然后isNotEmpty()检查当前集合是否为空。如果集合不为空, 则isNotEmpty()函数返回true, 否则返回false。

fun main(args: Array<String>){
    val mySet: Set<Any> = setOf(2, 6, 4, 29, 5, "Ashu", "Ajay")
    println(".......print Any set.........")
    for(element in mySet){
        println(element)
    }

    println("...mySet.isEmpty()...")
    println(mySet.isEmpty())

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

}

输出:

.......print Any set.........
2
6
4
29
5
Ashu
Ajay
...mySet.isEmpty()...
false
...mySet.isNotEmpty()...
true

Kotlinset接口示例4-drop()

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

fun main(args: Array<String>){
    val mySet: Set<Any> = setOf(2, 6, 4, 29, 4, 5, "Ajay", "Ashu", "Ajay")
    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)
    }
}

输出:

.......print Any set.........
2
6
4
29
5
Ajay
Ashu
.......print Set after mySet.drop(4).........
5
Ajay
Ashu

Kotlinset接口示例5-elementAt()和elementAtOrNull()

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

fun main(args: Array<String>){
    val mySet: Set<Any> = setOf(2, 6, 4, 29, 4, 5, "Ajay", "Ashu", "Ajay")

    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))
}

输出:

.......print Any set.........
2
6
4
29
5
Ajay
Ashu
.......print mySet.elementAt(3).........
29
.......print mySet.elementAtOrNull(5).........
Ajay
赞(0)
未经允许不得转载:srcmini » Kotlin set接口

评论 抢沙发

评论前必须登录!