如何获取 Kotlin 列表中的倒数第二项?



假设我在 Kotlin 中有一个列表,如下所示:

val lst = MutableList<Int>()

如果我想要最后一项,我可以做 lst.last((,但是倒数第二项呢?

怎么样:

val secondLast = lst.dropLast(1).last()

:-(

可以使用列表的大小来计算所需项的索引。

例如,列表中的最后一项是lst[lst.size - 1]

列表中的倒数第二项是lst[lst.size - 2]

列表中的倒数第三项是lst[lst.size - 3]

等等。

确保列表足够大,可以包含第 n 项到最后一项,否则将出现索引错误

使用集合切片

val list = mutableListOf("one" , "two" , "three")
print(list.slice(1..list.size - 1))

这将为您提供以下结果[two, three]

假设您的val lst = MutableList<Int>()中有 5 个项目,并且您想访问倒数第二个,这意味着 listObject[3](列表从第 0 个索引开始(。

lst.add(101) - 0th Index
lst.add(102) - 1th Index
lst.add(103) - 2th Index
lst.add(104) - 3th Index
lst.add(105) - 4th Index

所以你可以试试这个

last[lst.size - 2] = 104 3rd Index 

lst.size返回 5,所以如果你使用size - 1这意味着你尝试访问最后一个索引 4 个,但当你使用size - 2时,这意味着你尝试访问倒数第二个索引 3rd。

取第二个带有空检查的最后一个元素,

fun <T> List<T>.secondLast(): T {
if (size < 2)
throw NoSuchElementException("List has less than two elements")
return this[size - 2]}

或者使用它,如果索引大小不匹配,它只是返回 null

myList.getOrNull(myList.lastIndex - 1)

在 Kotlin 中使用 slice 和 till 。

lst.slice(1 until lst.size)

先掉落lst.drop(1)

取自最后lst.takeLast(lst.size - 1 )

切片自..自lst.slice(1..(lst.size-1) )

您可以参考此链接 https://kotlinlang.org/docs/collection-parts.html

最新更新