我有一个包含日期的AA类对象列表和一个BB类对象列表:
data class AA(
val date: LocalDate,
val bb: List<BB>
)
@Parcelize
data class BB(
val x: Int,
val y: String,
val z: String
) : Parcelable
我想创建一个列表(平面化List<AA>
),看起来像这样:
listOf(
date obj
BB obj
BB obj
date obj
BB obj
date obj
BB obj
BB obj
BB obj)
代替:
listOf(
date obj, listOf(BB obj, BB obj)
date obj, listOf(BB obj)
date obj, listOf(BB obj, BB obj, BB obj))
我试着使用flatMap,但我只能展平一个部分- BB。
如何创建一个包含日期和BB项的列表?
4条答案
按热度按时间jgzswidk1#
我知道的最简单的一个是
Iterable
的扩展flatten()
函数,因为List
是后者的子类,所以它是适用的。https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/flatten.html
qojgxg4l2#
正如@DYS所回答的,你可以也应该使用
flatten
来扁平化一个列表。我的回答涵盖了如何实现问题中所述的特殊情况。您可以这样做:
参见完整示例
基本上你使用
flatMap
,用date
创建一个MutableList<Any>
,然后在also
块中创建BB
的addAll
项。可能有一个更优雅的方法来做这件事,但我首先想到了这个方法。简单地使用
flatten
在这里不起作用,因为AA不实现iterable
。3qpi33ja3#
您可以简单地尝试以下操作:
nxagd54h4#
我发现的简化列表的最佳方法是: