当前位置: 首页 > news >正文

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]
http://www.dtcms.com/a/339870.html

相关文章:

  • es9.0.1语义检索简单示例
  • 颠覆性进化:OpenAI正式发布GPT-5,AI大模型进入“超级智能”时代
  • InnoDB为什么使用B+树实现索引?
  • 神经网络拆解:用Excel模拟手写数字识别
  • Flume学习笔记
  • OR+DBLINK的关联SQL优化思路
  • Transformer中的编码器和解码器是什么?
  • LLMs之RL之GSPO:《Group Sequence Policy Optimization》翻译与解读
  • 高校数字化转型实战:破解数据孤岛、构建智能指标体系与AI落地路径
  • 数据清理后续
  • 低功耗模式
  • Java配置文件
  • Consul- acl机制!
  • 01-Docker-简介、安装与使用
  • Linux学习-通信(信号,共享内存)
  • C++实现教务管理系统,文件操作账户密码登录(附源码)
  • gitlab、jenkins等应用集成ldap
  • AI学习之DeepSeek本地化部署
  • 数据结构-栈和队列
  • Go语言并发编程 ----- sync包
  • Js逆向案例 Scrape Spa2(Webpack自吐)
  • 2020年EAAI SCI1区TOP,基于ORPFOA算法的多无人机在线变化任务路径规划,深度解析+性能实测
  • RAG 面试题(实时更新补充)
  • 基于SpringBoot的篮球馆预约管理系统【2026最新】
  • 西门子博途DB数据块的详细用法以及如何与威纶通触摸屏变量关联
  • 中兴B862AV3.2M/B862AV3.1-M2 晨星mso9385_安卓9_原厂备份救砖包
  • 机械原理的齿轮怎么学?
  • 【网络运维】Playbook部署文件:Files模块库&JINJA2模板
  • 根据Wireshark捕获数据包时间和长度绘制电脑发射信号波形
  • 图论——Bellman-Ford和SPFA