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

【Kotlin set接口】输出:
.......print Any set......... 2 6 4 29 5 Ajay Ashu .......print mySet.elementAt(3)......... 29 .......print mySet.elementAtOrNull(5)......... Ajay

    推荐阅读