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

Kotlin 列表过滤如何实现无匹配结果时返回原列表而非空列表

Kotlin列表过滤无匹配返回原列表实现方案

你可以按如下方式修改代码,满足inline函数定义、无匹配返回原列表的需求:

inline fun List<Obj>?.filterQueryText(queryText: String?) = this?.run {
    // 执行过滤逻辑
    val filteredList = filter { queryText.equals(it.objName) }
    // 过滤结果非空返回过滤结果,为空返回原列表
    filteredList.takeIf { it.isNotEmpty() } ?: this
}.orEmpty()

逻辑说明

  • 新增inline关键字符合你对inline函数的要求
  • 通过run作用域获取原列表的引用,方便过滤结果为空时回退返回
  • takeIf判断过滤后的列表是否有匹配项,有就直接返回过滤结果,没有就返回原列表
  • 末尾保留orEmpty()处理原列表本身为null的边界场景,和原有逻辑的空安全规则保持一致

可选优化

如果需要兼容查询文本为空/为null时直接返回原列表的场景,可以加前置判断避免不必要的列表遍历:

inline fun List<Obj>?.filterQueryText(queryText: String?) = this?.run {
    if (queryText.isNullOrEmpty()) return@run this
    filter { queryText.equals(it.objName) }.takeIf { it.isNotEmpty() } ?: this
}.orEmpty()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:06:03