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

Kotlin如何根据映射规则对列表元素应用不同函数并保留原顺序

Kotlin 按映射规则分流处理列表元素的最简实现

直接使用Kotlin标准库提供的集合map扩展函数即可完成需求,该函数遍历元素时会严格保留原列表的元素顺序,无需额外做顺序对齐操作,是代码量最少、性能最优的实现方式。

实现步骤

  • 先将function方法的返回值声明为List<Int>,匹配整数结果列表的返回要求
  • 遍历传入列表的每个元素,查询mapper中对应的标记值,根据标记值选择对应的处理函数执行
  • 单次遍历即可生成结果,无需额外的分组、排序、中间集合存储操作

完整可运行代码如下:

class Example(){

    val mapper = mapOf<String, Int>(
        "abc" to 1,
        "de" to 0,
        "fedd" to 1,
        "q" to 1
    )

    fun function1(x:String)=x.length*2
    fun function0(x:String)=x.length*3

    fun function(lst: List<String>): List<Int> {
        return lst.map { element ->
            when(mapper[element]) {
                1 -> function1(element)
                0 -> function0(element)
                else -> error("Mapper缺少元素[$element]对应的处理规则")
            }
        }
    }
}

效果验证

传入测试列表listOf("q", "fedd", "de")时,计算逻辑完全匹配要求:

  • 元素q在mapper中对应值为1,执行function1得1*2=2
  • 元素fedd在mapper中对应值为1,执行function1得4*2=8
  • 元素de在mapper中对应值为0,执行function0得2*3=6
    最终返回结果为[2, 8, 6],符合预期。

如果业务场景允许mapper中缺失元素配置,可以把取值逻辑换成mapper.getOrDefault(element, 0),给缺失的规则设置默认走的处理分支,避免抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:21:47