我试图解析通过以下方式定义的数据对象列表:
data class BookInfo(
val id: Int?,
val description: String)我收到了这个BookInfo的列表,这个列表可能高达50。
我试图按id重新组合图书列表,然后对每个重新组合的forEach按id对BookInfo进行排序。
类似于:
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,结果是具有相同id的subList of BookInfo。
这就像使用.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"),
我知道这听起来很奇怪
你知道吗,怎么做
发布于 2022-10-07 06:11:35
您可以执行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)]https://stackoverflow.com/questions/73982942
复制相似问题