如何在Scala中使用平面图?

如何在Scala中使用平面图?,scala,Scala,我有一份清单: case class Dog(age: Int) val dogs: List[Dog] = Dog(5) :: Dog(2) :: Dog(2) :: Dog(4) :: Dog(4) :: Dog(4) :: Dog(8) :: Nil 我会做的清单,它将创造的儿童数量等于狗的年龄。你能帮我吗?谢谢 我想要的结果是:列出狗(5),狗(5),狗(5),狗(5),狗(5),狗(2),狗(2),狗(2),狗(4),狗(4),狗(4),狗(4),狗(4),狗(4),狗(4),狗(4

我有一份清单:

case class Dog(age: Int)
val dogs: List[Dog] = Dog(5) :: Dog(2) :: Dog(2) :: Dog(4) :: Dog(4) :: Dog(4) :: Dog(8) :: Nil
我会做的清单,它将创造的儿童数量等于狗的年龄。你能帮我吗?谢谢


我想要的结果是:列出狗(5),狗(5),狗(5),狗(5),狗(5),狗(2),狗(2),狗(2),狗(4),狗(4),狗(4),狗(4),狗(4),狗(4),狗(4),狗(4),狗(4),狗(4),狗(4),狗(4),狗(8),狗(8),狗(8),狗(8),狗(8),狗(8),狗(8)

你的问题有点不清楚,所以你可能想澄清一下,但我想我明白你的意思——假设你的狗是这样定义的

case class Dog(age: Int)
然后你可以创建一个像这样的地图

val doggies = dogs map(i => i.age -> i) toMap
doggies: scala.collection.immutable.Map[Int,Dog] = Map(5 -> Dog(5), 2 -> Dog(2), 4 -> Dog(4), 8 -> Dog(8))
顺便说一句,如果您愿意,您可以创建如下列表:

val dogs: List[Dog] = List(Dog(5), Dog(2), Dog(2), Dog(4), Dog(4), Dog(4), Dog(8))
编辑

我看到你改变了你的问题,你想要这个

scala> dogs.flatMap(i => List.fill(i.age)(i))
res13:List[Dog]=List(Dog(5)、Dog(5)、Dog(5)、Dog(5)、Dog(2)、Dog(2)、Dog(4)、Dog(4)、Dog(4)、Dog(4)、Dog(4)、Dog(4)、Dog(4)、Dog(4)、Dog(4)、Dog(4)、Dog(4)、Dog(8)、Dog(8)、Dog(8)、Dog(8))

其中List.fill(n)(e)将创建一个ef的列表

非常简单,我想:


flatMap(dog=>{for(i))您的问题不清楚。提供预期输出的示例可能会有所帮助。
scala> dogs.flatMap(i => List.fill(i.age)(i))