【发布时间】:2019-12-06 00:34:43
【问题描述】:
我最近意识到 Kotlin 中有两个非常相似的函数用于获取 List 的一部分,但我不确定其中的区别:
documentation for List.subList 说:
返回此列表在指定 fromIndex(包括)和 toIndex(不包括)之间的部分的视图。返回的列表由该列表支持,因此返回列表中的非结构性更改会反映在该列表中,反之亦然。
基本列表中的结构更改使视图的行为未定义。
返回一个列表,其中包含指定索引范围内索引处的元素。
或者
返回包含指定索引处元素的列表。
似乎关键区别在于第一个返回列表的“部分视图”,以及是否反映了非结构性变化?但是我不太确定这意味着什么。
我查看了slice函数的源代码:
public fun <T> List<T>.slice(indices: IntRange): List<T> {
if (indices.isEmpty()) return listOf()
return this.subList(indices.start, indices.endInclusive + 1).toList()
}
但它会从subList 函数返回一个列表。
有人能解释一下这两个函数之间的区别吗?什么时候你可能想使用其中一个而不是另一个?
【问题讨论】:
-
您可以查看示例,其中提到了
sublist和slice之间的区别,也可以选择drop和take功能来实现相同的chetangupta.net/bbk7
标签: list kotlin collections slice