Functional programming 使用Kotlin streams收集项目

Functional programming 使用Kotlin streams收集项目,functional-programming,kotlin,Functional Programming,Kotlin,我有一个播放器,它有包s,每个包都有物品(字符串): 首先,您为什么想要一个列表?使用此数据类型会丢失所有类型信息。如果不进行强制转换(当然,除了调用Any上的方法),就不能对这样一个列表中的元素执行任何操作 如果您确实想这样做,您可以像这样使用flatMap: val list = player.bags.flatMap { bag -> listOf(bag) + bag.items } 如果列表的顺序不重要,我会这样做: val list = player.bags.flatMap

我有一个
播放器
,它有
s,每个
都有物品(
字符串
):


首先,您为什么想要一个
列表
?使用此数据类型会丢失所有类型信息。如果不进行强制转换(当然,除了调用
Any
上的方法),就不能对这样一个列表中的元素执行任何操作

如果您确实想这样做,您可以像这样使用
flatMap

val list = player.bags.flatMap { bag -> listOf(bag) + bag.items }
如果列表的顺序不重要,我会这样做:

val list = player.bags.flatMap { it.items } + player.bags

太好了,谢谢!我完全同意你的看法。事实上,我没有使用列表,但我简化了问题的列表谢谢你的编辑,基里尔。我开始写答案,认为这是一个Scala问题:P
val list = player.bags.flatMap { bag -> bag.items }
val list = player.bags.flatMap { bag -> listOf(bag) + bag.items }
val list = player.bags.flatMap { it.items } + player.bags