嘿,我有嵌套列表,我想找到外列表的最后一次出现索引值。我试着在Kotlin Doc里搜索。我尝试了一些代码,但失败了。那么,在我的例子中,我怎样才能有效地做到这一点呢?
fun main() {
val value = listOf(
Group(0, mutableListOf(GroupValue(true, "1"))),
Group(1, mutableListOf(GroupValue(true, "2"))),
Group(2, mutableListOf(GroupValue(false, "3"))),
Group(3, mutableListOf(GroupValue(true, "4"))),
Group(4, mutableListOf(GroupValue(false, "5"))),
Group(5, mutableListOf(GroupValue(true, "6"))),
Group(6, mutableListOf(GroupValue(true, "6"), GroupValue(false, "7"))),
Group(7, mutableListOf(GroupValue(true, "6"), GroupValue(false, "7"))),
Group(8, mutableListOf(GroupValue(true, "6"), GroupValue(true, "7"), GroupValue(false, "7"))),
Group(9, mutableListOf(GroupValue(false, "6"), GroupValue(true, "7"))),
Group(10, mutableListOf(GroupValue(true, "7")))
)
val result = value.asSequence().flatMap { it.value }.indexOfLast { conversationItems ->
conversationItems?.isRead == false
}
println("result $result")
}
组
data class Group(
val key: Int,
val value: MutableList<GroupValue?>
)
GroupValue
data class GroupValue(
val isRead: Boolean? = null,
val id: String? = null
)
得到以上代码的输出为
result 13
预期输出
result 9
我不知道我在上面的逻辑中做错了什么
13是正确的,因为您使用了flatMap
,它将所有列表转换为单个列表,并且您将获得更大的组合列表中项目的索引。
根据您所说的预期,我猜您想要包含false
isRead
GroupValue的最后一个组的外部列表的索引。我将这样做:
val result = value.indexOfLast { group ->
group.value.any { it?.isRead == false }
}