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

Kotlin MutableList是否有take、slice的就地修改版本?

关于MutableList就地保留前N个元素的实现方案

原生标准库实现

Kotlin 标准库没有直接提供名为take/slice的就地修改版本,不过你可以通过已有API组合实现等价效果,无需额外引入依赖:

// 保留前5个元素,就地修改
myList.subList(5, myList.size).clear()

原理说明:MutableList.subList()返回的是原列表的视图,对返回子列表的修改会直接作用到原列表上,因此调用子列表的clear()方法就会移除原列表中从索引n到末尾的所有元素,最终仅保留前n个元素。
使用时需要注意参数合法性:n必须大于等于0,且小于等于列表总长度,否则会抛出IndexOutOfBoundsException。

自定义扩展函数实现你期望的调用方式

你可以通过 Kotlin 扩展函数封装上述逻辑,直接实现你想要的keepFirst调用风格:

fun <T> MutableList<T>.keepFirst(n: Int) {
    // 参数合法性校验
    require(n >= 0) { "保留的元素个数 $n 不能为负数" }
    // 边界情况:要保留的元素个数大于等于当前列表长度时,无需修改直接返回
    if (n >= size) return
    // 移除索引n及之后的所有元素
    subList(n, size).clear()
}

封装后即可直接按你期望的方式调用:

myList.keepFirst(5)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:27:04