根据对象从 Kotlin 中的列表中提取列表



我正在尝试解析由以下定义的数据对象列表:

data class BookInfo(
val id: Int?,
val description: String)

我收到此BookInfo的列表,最多可能有 50 个。

我正在尝试按 id 重新分组书籍列表,然后在每个按 id 重新分组的BookInfo列表中运行 forEach

像这样:

val tmpList: List = [BookInfo(1, "test"), BookInfo(2, "tit"), BookInfo(1, "tkllt"), BookInfo(3, "test"), BookInfo(1, "test"), BookInfo(2, "test"), BookInfo(3, "test"), BookInfo(2, "test")]

然后使用tmpList.<function_in_kotlin_condition_on_id>.forEach()将运行 forEach,结果是具有相同idBookInfo子列表。

这就像使用.filter提取列表以获取具有相同 id 的所有 BookInfo 的子列表,然后在所有不同的id上运行 forEach

tmpList.<extract_by_id>.forEach { sublist ....子列表将是

BookInfo(1, "test"), BookInfo(1, "tkllt"), BookInfo(1, "test")forEach上的下一个循环将是BookInfo(2, "tit"),BookInfo(2, "test"),BookInfo(2, "test"),最后是BookInfo(3, "test"),BookInfo(3, "test"),

我知道这似乎解释得很奇怪

任何想法,如何去做

您可以执行groupBy,然后获取结果地图的values。例:

fun main() {
val books = arrayOf(
BookInfo(1,"a"),
BookInfo(2,"b"),
BookInfo(1,"c"),
BookInfo(2,"d"),
BookInfo(1,"e"),
BookInfo(3,"f")
)
books.groupBy { it.id }.values.forEach {
println(it)
}
}
data class BookInfo(
val id: Int?,
val description: String)

输出:

[BookInfo(id=1, description=a), BookInfo(id=1, description=c), BookInfo(id=1, description=e)]
[BookInfo(id=2, description=b), BookInfo(id=2, description=d)]
[BookInfo(id=3, description=f)]

相关内容

  • 没有找到相关文章

最新更新