You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Kotlin的Set可添加重复元素?是我误解文档了吗?

为什么Kotlin的setOf传入重复元素却不报错?

Kotlin的Set确实不允许存在相等的元素,你并没有误解文档,问题出在对"重复"的判断逻辑和setOf的实现上:

关键细节:

  • Set的"禁止重复"是指集合最终不会包含两个equals方法返回true的元素,而不是限制你在创建时传入重复的参数。
  • 当你调用setOf(c, c)或setOf("3", "3")时,函数内部会自动做去重处理,最终生成的Set里只会保留一个元素。你可以通过打印集合大小验证:
var c = Card2.`2c`
var cards3: Set<Card2> = setOf(c, c)
println(cards3.size) // 结果是1

var s: Set<String> = setOf("3", "3")
println(s.size) // 结果是1
  • 编译器不会在编译阶段报错,因为元素是否重复需要依赖运行期的equals逻辑判断,编译期无法提前确定。

内容的提问来源于stack exchange,提问作者Сергей Ружейников

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 10:58:12