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

Kotlin集合操作遇到空值/空白值时如何提前退出并返回null

解决方案

方案1:预构建映射(推荐,多次查找性能更高)

把列表一次性转成NAME到ID的映射表,后续每次查询都是O(1)时间复杂度,代码简洁易读:

// 预构建映射,只需要执行一次
val nameToIdMap = lookupList.associate { it.NAME to it.ID }

val testName = ""
// 查询逻辑,空字符串直接返回null,非空直接取映射值
val resultID = if (testName.isBlank()) null else nameToIdMap[testName]

println(resultID) // 空testName时输出null

方案2:单次查找直接链式调用

如果只需要查询一次,不需要复用查找表,直接用firstOrNull替代原来的filter+map+first组合即可:

val testName = ""
val resultID = lookupList.firstOrNull { it.NAME == testName }?.ID

println(resultID) // 空testName时输出null

原代码问题说明

你之前的代码崩溃并不是map执行失败,而是filter得到空列表后调用first()会抛出NoSuchElementException。firstOrNull在没有匹配项时会直接返回null,配合安全调用符?.取ID,自然就能实现无匹配时返回null的需求,不需要额外新增空白条目、拼接集合等冗余操作。

内容的提问来源于stack exchange,提问作者lukas.j

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:15:03