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。 |
让我们创建一个使用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
推荐阅读
- Kotlin智能投射
- Kotlin密封类
- Kotlin return跳转表达式
- Kotlin正则表达式
- Kotlin正则表达式模式
- Kotlin反射
- Kotlin递归函数
- Kotlin运算符
- Kotlin Null安全类型