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

Kotlin如何从嵌套集合中提取Person类name属性的去重值

Kotlin嵌套集合提取唯一属性解决方案

你可以通过「打平嵌套集合→过滤目标类型→按字段去重→提取属性」的链路实现需求,有两种常用实现方式:

方案1:分步处理(可读性更强)

val uniquePersonNames = arr.flatten()
    // 过滤出所有Person类型元素,自动完成类型转型
    .filterIsInstance<Person>()
    // 按name字段去重
    .distinctBy { it.name }
    // 提取name属性得到最终结果
    .map { it.name }

// 输出验证
uniquePersonNames.forEach { println(it) }

方案2:flatMap一体化处理(写法更简洁)

val uniquePersonNames = arr.flatMap { subList ->
    // 直接从子列表中提取Person的name字段
    subList.filterIsInstance<Person>().map { it.name }
}.distinct() // 直接对字符串列表去重

说明

  • flatten() 专门用于把嵌套集合展开为单层集合,是Kotlin集合操作的标准API
  • filterIsInstance<T>() 是类型安全的过滤方法,会自动抛弃非目标类型的元素,同时完成类型转型,不需要手动做is判断和强转
  • 如果你的子列表中Person的位置是固定的(比如前两位一定是Person),也可以通过下标取元素省略类型判断,但上面的写法兼容性更高,不受元素位置影响

内容的提问来源于stack exchange,提问作者micdev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:36:00