3.Kotlin 集合 Set 所有方法
【代码】3.Kotlin 集合 Set 所有方法。
·
Kotlin Set 所有方法(按功能分类)
一、基础属性与判断
| 方法/属性 | 说明 | 示例 |
|---|---|---|
size: Int |
集合元素数量 | val set = setOf(1, 2, 3)set.size // 3 |
isEmpty(): Boolean |
判断是否为空集合 | setOf<Int>().isEmpty() // true |
isNotEmpty(): Boolean |
判断是否为非空集合 | setOf(1).isNotEmpty() // true |
二、元素访问与检查
| 方法 | 说明 | 示例 |
|---|---|---|
contains(element: E): Boolean |
判断是否包含指定元素 | val set = setOf(1, 2, 3)set.contains(2) // true |
containsAll(elements: Collection<E>): Boolean |
判断是否包含所有元素 | val set = setOf(1, 2, 3)set.containsAll(listOf(1, 3)) // true |
first(): E |
获取首个元素(空集合抛异常) | setOf(1, 2).first() // 1 |
firstOrNull(): E? |
获取首个元素(空集合返回 null) | setOf<Int>().firstOrNull() // null |
last(): E |
获取最后一个元素(空集合抛异常) | setOf(1, 2).last() // 2 |
lastOrNull(): E? |
获取最后一个元素(空集合返回 null) | setOf<Int>().lastOrNull() // null |
elementAt(index: Int): E |
获取指定索引元素(Set 无序,不建议使用) | val set = setOf(1, 2, 3)set.elementAt(0) // 1(顺序不保证) |
elementAtOrNull(index: Int): E? |
获取指定索引元素(越界返回 null) | val set = setOf(1, 2)set.elementAtOrNull(5) // null |
三、迭代与遍历
| 方法 | 说明 | 示例 |
|---|---|---|
iterator(): Iterator<E> |
返回迭代器 | val set = setOf(1, 2, 3)val it = set.iterator()while (it.hasNext()) println(it.next()) |
forEach(action: (E) -> Unit) |
遍历所有元素 | val set = setOf(1, 2, 3)set.forEach { print(it * 2) }// 输出: 246 |
forEachIndexed(action: (Int, E) -> Unit) |
带索引的遍历(索引不代表实际位置) | val set = setOf(1, 2, 3)set.forEachIndexed { i, v -> println("索引 $i: $v")} |
四、转换操作
| 方法 | 说明 | 示例 |
|---|---|---|
toSet(): Set<E> |
转换为不可变集合(本身为Set时返回自身) | val set = setOf(1, 2)set.toSet() // [1, 2] |
toMutableSet(): MutableSet<E> |
转换为可变集合 | val set = setOf(1, 2)val mutableSet = set.toMutableSet()mutableSet.add(3) // [1, 2, 3] |
toList(): List<E> |
转换为列表 | val set = setOf(1, 2, 3)set.toList() // [1, 2, 3] |
toTypedArray(): Array<E> |
转换为数组 | val set = setOf(1, 2, 3)set.toTypedArray() // [1, 2, 3](数组) |
plus(element: E): Set<E> |
添加单个元素并返回新集合(重复元素会被忽略) | val set = setOf(1, 2)set.plus(3) // [1, 2, 3]set.plus(2) // [1, 2](重复元素不添加) |
plus(elements: Collection<E>): Set<E> |
合并集合并返回新集合(去重) | val set = setOf(1, 2)set.plus(listOf(2, 3)) // [1, 2, 3] |
minus(element: E): Set<E> |
移除元素并返回新集合 | val set = setOf(1, 2, 3)set.minus(2) // [1, 3] |
minus(elements: Collection<E>): Set<E> |
移除多个元素并返回新集合 | val set = setOf(1, 2, 3)set.minus(listOf(2, 3)) // [1] |
map(transform: (E) -> R): List<R> |
元素转换(返回列表) | val set = setOf(1, 2, 3)set.map { it * 2 } // [2, 4, 6] |
filter(predicate: (E) -> Boolean): Set<E> |
过滤元素并返回新集合 | val set = setOf(1, 2, 3, 4)set.filter { it % 2 == 0 } // [2, 4] |
五、查找与过滤
| 方法 | 说明 | 示例 |
|---|---|---|
first(predicate: (E) -> Boolean): E |
首个满足条件的元素(无则抛异常) | val set = setOf(1, 2, 3)set.first { it > 1 } // 2 |
firstOrNull(predicate: (E) -> Boolean): E? |
首个满足条件的元素(无则null) | val set = setOf(1, 3, 5)set.firstOrNull { it % 2 == 0 } // null |
last(predicate: (E) -> Boolean): E |
最后满足条件的元素(无则抛异常) | val set = setOf(1, 2, 3)set.last { it > 1 } // 3 |
lastOrNull(predicate: (E) -> Boolean): E? |
最后满足条件的元素(无则null) | val set = setOf(1, 3, 5)set.lastOrNull { it % 2 == 0 } // null |
single(): E |
唯一元素(元素数不为1则抛异常) | setOf(5).single() // 5 |
singleOrNull(): E? |
唯一元素(元素数不为1则null) | setOf(1, 2).singleOrNull() // null |
single(predicate: (E) -> Boolean): E |
唯一满足条件的元素(不满足则抛异常) | setOf(1, 2, 3).single { it == 2 } // 2 |
singleOrNull(predicate: (E) -> Boolean): E? |
唯一满足条件的元素(不满足则null) | setOf(1, 2, 3, 4).singleOrNull { it % 2 == 0 } // null |
find(predicate: (E) -> Boolean): E? |
等同于 firstOrNull(predicate) |
val set = setOf(1, 2, 3)set.find { it > 1 } // 2 |
findLast(predicate: (E) -> Boolean): E? |
等同于 lastOrNull(predicate) |
val set = setOf(1, 2, 3)set.findLast { it > 1 } // 3 |
filterNot(predicate: (E) -> Boolean): Set<E> |
过滤不满足条件的元素 | val set = setOf(1, 2, 3, 4)set.filterNot { it % 2 == 0 } // [1, 3] |
filterIsInstance<T>(): Set<T> |
过滤指定类型的元素 | val set = setOf(1, "a", 2, "b")set.filterIsInstance<Int>() // [1, 2] |
filterNotNull(): Set<E> |
过滤非空元素(适用于 nullable 类型) | val set = setOf(1, null, 3)set.filterNotNull() // [1, 3] |
六、集合运算
| 方法 | 说明 | 示例 |
|---|---|---|
union(other: Collection<E>): Set<E> |
计算与另一个集合的并集 | val set1 = setOf(1, 2)val set2 = setOf(2, 3)set1.union(set2) // [1, 2, 3] |
intersect(other: Collection<E>): Set<E> |
计算与另一个集合的交集 | val set1 = setOf(1, 2)val set2 = setOf(2, 3)set1.intersect(set2) // [2] |
subtract(other: Collection<E>): Set<E> |
计算与另一个集合的差集 | val set1 = setOf(1, 2)val set2 = setOf(2, 3)set1.subtract(set2) // [1] |
containsAll(other: Collection<E>): Boolean |
判断是否包含另一个集合的所有元素 | val set1 = setOf(1, 2, 3)val set2 = setOf(2, 3)set1.containsAll(set2) // true |
isEmpty(): Boolean |
判断是否为空集 | setOf<Int>().isEmpty() // true |
isNotEmpty(): Boolean |
判断是否为非空集 | setOf(1).isNotEmpty() // true |
七、统计与判断
| 方法 | 说明 | 示例 |
|---|---|---|
count(): Int |
元素总数(等同于 size) | setOf(1, 2, 3).count() // 3 |
count(predicate: (E) -> Boolean): Int |
满足条件的元素数 | setOf(1, 2, 3).count { it > 1 } // 2 |
sum(): E |
元素总和(数值类型) | setOf(1, 2, 3).sum() // 6 |
sumBy(selector: (E) -> Int): Int |
按选择器计算总和 | setOf("a", "ab", "abc").sumBy { it.length } // 6 |
sumByDouble(selector: (E) -> Double): Double |
按选择器计算浮点总和 | setOf(1.5, 2.5).sumByDouble { it } // 4.0 |
average(): Double |
平均值(数值类型) | setOf(1, 2, 3).average() // 2.0 |
maxOrNull(): E? |
最大值 | setOf(1, 3, 2).maxOrNull() // 3 |
minOrNull(): E? |
最小值 | setOf(1, 3, 2).minOrNull() // 1 |
maxByOrNull(selector: (E) -> Comparable<*>?): E? |
按选择器取最大值元素 | setOf("a", "ab").maxByOrNull { it.length } // "ab" |
minByOrNull(selector: (E) -> Comparable<*>?): E? |
按选择器取最小值元素 | setOf("a", "ab").minByOrNull { it.length } // "a" |
all(predicate: (E) -> Boolean): Boolean |
是否所有元素满足条件 | setOf(2, 4, 6).all { it % 2 == 0 } // true |
any(predicate: (E) -> Boolean): Boolean |
是否存在满足条件的元素 | setOf(1, 3, 4).any { it % 2 == 0 } // true |
none(predicate: (E) -> Boolean): Boolean |
是否无元素满足条件 | setOf(1, 3).none { it % 2 == 0 } // true |
八、排序操作
| 方法 | 说明 | 示例 |
|---|---|---|
sorted(): List<E> |
返回升序排序的列表(Set 本身无序,返回 List) | val set = setOf(3, 1, 2)set.sorted() // [1, 2, 3] |
sortedDescending(): List<E> |
返回降序排序的列表 | val set = setOf(3, 1, 2)set.sortedDescending() // [3, 2, 1] |
sortedBy(selector: (E) -> Comparable<*>?): List<E> |
按选择器结果升序排序(返回 List) | val set = setOf("apple", "banana")set.sortedBy { it.length } // [apple, banana] |
sortedByDescending(selector: (E) -> Comparable<*>?): List<E> |
按选择器结果降序排序(返回 List) | val set = setOf("apple", "banana")set.sortedByDescending { it.length } // [banana, apple] |
sortedWith(comparator: Comparator<in E>): List<E> |
按自定义比较器排序(返回 List) | val set = setOf("b", "a", "c")set.sortedWith(compareBy { it }) // [a, b, c] |
九、其他常用方法
| 方法 | 说明 | 示例 |
|---|---|---|
toString(): String |
转换为字符串表示 | setOf(1, 2, 3).toString() // "[1, 2, 3]" |
joinToString(separator: String = ", "): String |
自定义字符串拼接 | setOf(1, 2, 3).joinToString("; ") // "1; 2; 3" |
equals(other: Any?): Boolean |
判断内容是否相等 | setOf(1, 2).equals(setOf(2, 1)) // true(Set 无序) |
hashCode(): Int |
计算哈希值 | setOf(1, 2).hashCode() // 哈希值(因环境而异) |
asSequence(): Sequence<E> |
转换为序列(延迟计算) | setOf(1, 2, 3).asSequence().map { it * 2 }.toSet() // [2,4,6] |
onEach(action: (E) -> Unit): Set<E> |
遍历元素并返回自身 | setOf(1, 2).onEach { println(it) } // [1, 2] |
更多推荐

所有评论(0)