假设我在Kotlin中有一个List,如下所示:
val lst = MutableList<Int>()
如果我想要最后一项,我可以使用lst.last(),但是倒数第二项呢?
kyxcudwk1#
可以使用列表的大小来计算所需项的索引。例如,列表中的最后一项为lst[lst.size - 1]。列表中倒数第二项是lst[lst.size - 2]。列表中倒数第三项是lst[lst.size - 3]。等等。请确保列表足够大,可以包含倒数第n项,否则将出现索引错误
lst[lst.size - 1]
lst[lst.size - 2]
lst[lst.size - 3]
bzzcjhmw2#
使用集合切片
val list = mutableListOf("one" , "two" , "three") print(list.slice(1..list.size - 1))
这将给予以下结果[two, three]
[two, three]
rwqw0loc3#
假设您的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,则表示您尝试访问倒数第二个索引第3个索引。
lst.size
size - 1
size - 2
mwngjboj4#
采用带有空检查的secondLast元素,
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)
gz5pxeao5#
不如这样:
val secondLast = lst.dropLast(1).last()
:—)
yhqotfr86#
丢弃第一个lst.drop(1)从上一个lst.takeLast(lst.size - 1 )获取切片从..到lst.slice(1..(lst.size-1) )您可以参考此链接https://kotlinlang.org/docs/collection-parts.html
lst.drop(1)
lst.takeLast(lst.size - 1 )
lst.slice(1..(lst.size-1) )
6条答案
按热度按时间kyxcudwk1#
可以使用列表的大小来计算所需项的索引。
例如,列表中的最后一项为
lst[lst.size - 1]
。列表中倒数第二项是
lst[lst.size - 2]
。列表中倒数第三项是
lst[lst.size - 3]
。等等。
请确保列表足够大,可以包含倒数第n项,否则将出现索引错误
bzzcjhmw2#
使用集合切片
这将给予以下结果
[two, three]
rwqw0loc3#
假设您的
val lst = MutableList<Int>()
中有5个项目,并且您希望访问倒数第二个项目,这意味着listObject[3](列表从第0个索引开始)。所以你可以试试这个
lst.size
返回5,所以如果使用size - 1
,则表示您尝试访问最后一个索引第4个索引,但如果使用size - 2
,则表示您尝试访问倒数第二个索引第3个索引。mwngjboj4#
采用带有空检查的secondLast元素,
或者使用这个,如果索引大小不匹配,它只返回null
gz5pxeao5#
不如这样:
:—)
yhqotfr86#
丢弃第一个
lst.drop(1)
从上一个
lst.takeLast(lst.size - 1 )
获取切片从..到
lst.slice(1..(lst.size-1) )
您可以参考此链接https://kotlinlang.org/docs/collection-parts.html