android - 在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?>
)
集团价值
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 }
}
推荐阅读
- google-chrome-devtools - Chrome (69) 和用户计时
- mysql - MySql - 使用选择更新
- javascript - discord js 机器人硬币系统| sqlite 错误
- php - Mysqli bind_param 用于更新查询中的列名
- rest-assured - 如何在使用放心发送 API 时更新请求
- javascript - Revert `display: none` on elements to original value
- sqlite - SQlite 将一个链接到另一个表的多个 ID
- c++ - C ++像从另一个线程一样锁定互斥锁?
- mysql - Mysql 存储函数 RETURN CAST(finNumber AS DECIMAL(12,2)) AS final 出现未知错误;
- list - 遍历列表中的元组并获取其值