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

如何将列表中含指定字段值的项移动到顶部且不改变其余项排序

实现方案

核心逻辑是把原列表拆分为「匹配目标值的项」和「其余项」两个子集,再按要求的顺序拼接,不会修改其余项的原有排列顺序。

代码实现

你可以直接在原有的map转换后加一层集合处理,示例如下:

val target = "lorem"
list = downloadedData.items?.map {
    Item(
        text = it.title,
        onClick = Button { }
    )
}?.run {
    // 拆分列表:匹配项在前,其余项保持原顺序在后
    val (matchList, otherList) = partition { it.text == target }
    matchList + otherList
}

说明

  • 如果你的场景中可能存在多个title为lorem的项,上述写法会把所有匹配项都移到列表最顶部,匹配项之间的顺序和原列表完全一致
  • 如果只需要把第一个匹配的项移到顶部、其余匹配项保留原有位置,可以用下面的写法:
val target = "lorem"
list = downloadedData.items?.map {
    Item(
        text = it.title,
        onClick = Button { }
    )
}?.run {
    val firstMatch = firstOrNull { it.text == target } ?: return@run this
    listOf(firstMatch) + filterNot { it === firstMatch }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:54:02