【发布时间】:2015-07-10 05:16:20
【问题描述】:
我有一个动物类定义为
case class Animal(name: String, properties: List[String])
给定一个动物列表,我想要一个来自属性的地图 -> 满足该属性的动物列表
举个例子,如果我有输入,比如说,
List(
Animal("Dog",
List("has tail",
"can swim",
"can bark",
"can bite")),
Animal("Tuna",
List("can swim",
"has scales",
"is edible")),
Animal("Black Mamba",
List("has scales",
"is venomous",
"can bite"))
)
输出应该是
Map(
"has tail" -> List(Dog)
"can swim" -> List(Tuna,Dog)
"can bark" -> List(Dog)
"has scales" -> List(Tuna,Snake)
"is edible" -> List(Tuna)
"is venomous" -> List(Snake)
"can bite" -> List(Dog,Snake)
)
我对函数式编程很陌生。我可以以命令的方式做到这一点,但一直在努力想出一个功能性的解决方案。任何指针都是最受欢迎的! :)
【问题讨论】:
-
ImmutableList 的 groupBy 函数你试过了吗?这看起来就是您要找的东西。
-
这只是一个作业。
-
@Paul 不。这是 reddit 每日程序员的挑战 :))
标签: list scala dictionary functional-programming