- Kotlin环境设置(命令行)
- Kotlin Hello World程序(命令行)
- Kotlin程序概念解释
- Kotlin开发环境设置(IDE)
- Kotlin第一个程序(IDE)
- Kotlin变量
- Kotlin数据类型
- Kotlin类型转换
- Kotlin运算符
- Kotlin表达式、语句和块
- Kotlin标准输入/输出
- Kotlin注释
- 控制流程
- 函数
- 数组
- 字符串
- 异常处理
- 空安全
- 集合
- 注解
- 反射
- Kotlin OOP
- 范围
- Java互操作性
- 正则表达式
Kotlin Set接口
Kotlin Set
接口是一个通用的无序元素集合,Set
接口不支持重复元素。 该接口本质上是不可变的,它的方法支持集合的只读功能。
Set
接口使用setOf()
函数创建包含元素列表的Set
接口对象列表。
Set接口声明
interface Set<out E> : Collection<E> (source)
Set接口的属性
属性 | 描述 |
---|---|
abstract val size: Int |
它返回集合的大小。 |
Set接口的属性
Kotlin Set
接口有几个功能, 它的一些函数如下列表。
属性 | 描述 |
---|---|
abstract fun contains(element: E): Boolean |
它检查此集合中是否存在提及元素。 如果它包含element ,则返回true ,否则返回false 。 |
abstract fun containsAll(elements: Collection<E>): Boolean |
它检查此集合中是否存在指定集合的所有提及元素。 如果它包含element ,则返回true ,否则返回false 。 |
abstract fun isEmpty(): Boolean |
如果集合为空(不包含元素),则返回true ,否则返回false 。 |
abstract fun iterator(): Iterator<E> |
它返回set 对象元素的迭代器。 |
fun <T> Iterable<T>.all(predicate: (T) -> Boolean): Boolean |
如果所有元素与给定谓词匹配,则返回true 。 |
fun <T> Iterable<T>.any(): Boolean |
如果集合包含至少一个元素,则返回true 。 |
fun <T> Iterable<T>.count(predicate: (T) -> Boolean): Int |
它返回与给定谓词匹配的元素总数。 |
fun <T> Iterable<T>.distinct(): List<T> |
它返回一个列表,只包含给定集合中的不同元素。 |
fun <T> Iterable<T>.drop(n: Int): List<T> |
它返回一个列表,其中包含除前n 个元素之外的所有元素。 |
fun <T> Iterable<T>.elementAtOrElse(index: Int, defaultValue: (Int) -> T): T |
如果索引在当前集合中超出范围,它将返回给定索引处的元素或调用defaultValue 函数的结果。 |
fun <T> Iterable<T>.filter(predicate: (T) -> Boolean): List<T> |
它返回一个列表,其中只包含与给定谓词匹配的元素。 |
fun <T> Iterable<T>.filterIndexed(predicate: (index: Int, T) -> Boolean): List<T> |
它返回一个列表,其中只包含与给定谓词匹配的元素。 |
fun <T> Iterable<T>.filterNot(predicate: (T) -> Boolean): List<T> |
它返回一个列表,其中只包含那些与给定谓词不匹配的元素。 |
fun <T> Iterable<T>.find(predicate: (T) -> Boolean): T? |
它返回与给定谓词匹配的第一个元素,如果没有找到这样的元素,则返回null 。 |
fun <T> Iterable<T>.findLast(predicate: (T) -> Boolean): T? |
它返回与给定谓词匹配的最后一个元素,如果没有找到这样的元素,则返回null 。 |
fun <T> Iterable<T>.first(): T |
返回第一个元素。 |
fun <T> Iterable<T>.first(predicate: (T) -> Boolean): T |
它返回与给定谓词匹配的第一个元素。 |
fun <T> Iterable<T>.firstOrnull(): T? |
它返回第一个元素,如果collection 为空,则返回null 。 |
fun <T> Iterable<T>.indexOf(element: T): Int |
它返回给定元素的第一个索引,如果元素不包含在集合中,则返回-1 。 |
fun <T> Iterable<T>.indexOfFirst(predicate: (T) -> Boolean): Int |
它返回与给定谓词匹配的第一个元素的索引,如果该元素不包含在集合中,则返回-1 。 |
fun <T> Iterable<T>.indexOfLast(predicate: (T) -> Boolean): Int |
它返回与给定谓词匹配的最后一个元素的索引,如果该元素不包含在集合中,则返回-1 。 |
infix fun <T> Iterable<T>.intersect(other: Iterable<T>): Set<T> |
它返回一个集合,其中包含此集合和给定集合中存在的所有元素。 |
fun <T> Collection<T>.isNotEmpty(): Boolean |
如果不为空,则返回true 。 |
fun <T> Iterable<T>.last(): T |
它返回最后一个元素。 |
fun <T> Iterable<T>.last(predicate: (T) -> Boolean): T |
它返回与给定谓词匹配的最后一个元素。 |
fun <T> Iterable<T>.lastIndexOf(element: T): Int |
它返回给定元素的最后一个索引,如果集合中不存在元素,则返回-1 。 |
fun <T> Iterable<T>.lastOrnull(): T? |
它返回集合的最后一个元素,如果集合为空,则返回null 。 |
fun <T> Iterable<T>.lastOrnull(predicate: (T) -> Boolean): T? |
它在匹配给定谓词后返回最后一个元素,如果在集合中找不到这样的元素,则返回null 。 |
fun <T : Comparable<T>> Iterable<T>.max(): T? |
它返回最大的元素,如果集合中没有元素,则返回null 。 |
fun <T, R : Comparable<R>> Iterable<T>.maxBy(selector: (T) -> R): T? |
它返回第一个产生给定函数最大值的元素,如果集合中没有元素,则返回null 。 |
fun <T : Comparable<T>> Iterable<T>.min(): T? |
它返回最小的元素,如果集合中没有元素,则返回null 。 |
fun <T, R : Comparable<R>> Iterable<T>.minBy(selector: (T) -> R): T? |
它返回给定函数的最小值的第一个元素,如果没有元素则返回null 。 |
operator fun <T> Set<T>.minus(element: T): Set<T> |
它返回一个包含原始集的所有元素的集合,除了那些给定的元素外。 |
operator fun <T> Set<T>.minus(elements: Iterable<T>): Set<T> |
它返回一个包含原始集合的所有元素的集合,除了那些给定的元素集合外。 |
operator fun <T> Iterable<T>.minus(element: T): List<T> |
它返回一个列表,其中包含原始集合的所有元素,但给定的元素数组中包含的元素除外。 |
fun <T> Set<T>.minusElement(element: T): Set<T> |
它返回一个包含原始集的所有元素的集合,除了那些给定的元素外。 |
fun <T> Iterable<T>.minusElement(element: T): List<T> |
它返回一个列表,其中包含原始集合的所有元素,但第一次出现的是给定元素。 |
operator fun <T> Set<T>.plus(element: T): Set<T> |
它返回一组原始集合的所有元素以及给定元素(如果它尚未存在于集合中)。 |
operator fun <T> Set<T>.plus(elements: Iterable<T>): Set<T> |
它返回一个集合,其中包含原始集合的所有元素以及集合中尚未存在的给定元素集合。 返回的集合是以与原始集合相同的顺序保留元素的迭代。 |
operator fun <T> Iterable<T>.plus(element: T): List<T> |
它返回一个列表,其中包含原始集合的所有元素以及给定的元素。 |
fun <T> Set<T>.plusElement(element: T): Set<T> |
它返回一个集合,其中包含原始集合的所有元素以及给定元素。 |
fun <T> Iterable<T>.plusElement(element: T): List<T> |
它返回一个列表,其中包含原始集合的所有元素以及给定的元素。 |
fun <T> Iterable<T>.reversed(): List<T> |
它以相反的顺序返回包含元素的列表。 |
fun <T> Iterable<T>.single(): T |
它返回单个元素,或者如果集合有多个元素或为空,则抛出异常。 |
fun <T> Iterable<T>.singleOrnull(): T? |
它返回单个元素,如果集合有多个元素或者为空,则返回null 。 |
Kotlin Set接口示例1
首先使用setOf()
函数声明和遍历set
元素的示例。 在这个例子中,创建了一组Int
类型非泛型和另一个泛型的Any
类型集。示例 -
fun main(args: Array<String>){ val intSet = setOf(12,16,24,29,4,5) val mySet: Set<Any> = 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) } }
执行上面示例代码,得到以下结果 -
.......print Int set......... 12 16 24 29 4 5 .......print Any set......... 12 16 24 29 4 5 Java Ajax
在上面的例子中,在intSet
和mySet
中都声明了元素24
两次,但在遍历它们时,它们只打印元素24
一次。 这是因为set
接口不支持重复元素。
Kotlin Set接口示例2 - contains() 和 containsAll()函数
contains()
函数检查给定元素是否存在于当前集合中。 如果它包含在集合中,则返回true
,否则返回false
。 而containsAll()
函数检查集合类型的所有元素是否存在于当前集合中。 如果集合包含集合类型的所有元素,则返回true
,否则返回false
。
fun main(args: Array<String>){ val mySet: Set<Any> = 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)) }
执行上面示例代码,得到以下结果 -
.......print Any set......... 2 6 4 29 5 Ajax Java ...mySet.contains"Java"... true ...mySet.contains(20)... false ...mySet.containsAll(intSet)... true
Kotlin Set接口示例3 - isEmpty() 和 isNotEmpty() 函数
isEmpty()
函数检查当前set是否为空。 如果set为空,则isEmpty()
函数返回true
,否则返回false
。 并且isNotEmpty()
检查当前set是否为空。 如果set不为空,则isNotEmpty()
函数返回true
,否则返回false
。
fun main(args: Array<String>){ val mySet: Set<Any> = 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()) }
执行上面示例代码,得到以下结果 -
.......print Any set......... 2,6,4,29,5,Ajax,Java, ...mySet.isEmpty()... false ...mySet.isNotEmpty()... true
Kotlin Set接口示例4 - drop()函数
drop()
函数返回除集合的前n
个元素之外的所有元素。
fun main(args: Array<String>){ val mySet: Set<Any> = 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) } }
执行上面示例代码,得到以下结果 -
.......print Any set......... 2 6 4 29 5 Ajax Java .......print Set after mySet.drop(4)......... 5 Ajax Java
Kotlin Set接口示例5 - elementAt() 和 elementAtOrNull()函数
elementAt()
函数返回给定索引处的元素,而elementAtOrNull()
函数也返回给定索引处的元素,但如果指定的索引不包含元素,则返回null
。
fun main(args: Array<String>){ val mySet: Set<Any> = 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)) }
执行上面示例代码,得到以下结果 -
.......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
扫描二维码
程序员编程王