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] |