查找Kotlin中外表最后一次出现的索引值



嘿,我有嵌套列表,我想找到外列表的最后一次出现索引值。我试着在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,它将所有列表转换为单个列表,并且您将获得更大的组合列表中项目的索引。

根据您所说的预期,我猜您想要包含falseisReadGroupValue的最后一个组的外部列表的索引。我将这样做:

val result = value.indexOfLast { group ->
group.value.any { it?.isRead == false }
}

相关内容

  • 没有找到相关文章

最新更新