kotlin中如何获取ArrayList最后一项之前的项?

问题描述 投票:0回答:3

如何在 kotlin 中获取 ArrayList 最后一项之前的项?

我有一个类似的清单

val myList = listOf("item1", "item2", "item3", "item4", "item5")

我想从我的列表中获取“item4”

arraylist kotlin
3个回答
5
投票
myList[myList.lastIndex - 1]

在调用此函数之前,请务必检查数组中是否至少有两项


编辑: 如果您经常使用此功能,您可以定义一个功能类似于

last()
:

的扩展函数
fun <T> List<T>.secondToLast(): T {
    if (size < 2)
        throw NoSuchElementException("List has less than two elements")
    return this[size - 2]
}

4
投票

你可以这样做:

myList.getOrNull(myList.lastIndex - 1)

这不需要额外的检查,但如果列表很小或为空,则会返回

null

此外,正如评论中提到的,您可以使用 elvis 运算符回退到其他值或场景:

myList.getOrNull(myList.lastIndex - 1) ?: "unknown"

myList.getOrNull(myList.lastIndex - 1) ?: return

同样对于此用例,您可以使用

.getOrElse
函数,您可以根据请求的索引选择后备方案:

myList.getOrElse(myList.lastIndex - 1) { index ->
    // todo:
}

0
投票

这个怎么样:

myList.dropLast(1).lastOrNull()

这不是很有效,但读起来真的很好。

Marko 在评论中提出了类似的、更有效的方法:

myList.takeLast(2).firstOrNull()
© www.soinside.com 2019 - 2024. All rights reserved.