我需要转换像这样的集合
case class Entity( year: Int, month: Int )
List( Entity(2013,01), Entity(2013,01), Entity(2013,03),
Entity(2013,02), Entity(2013,02), Entity(2013,02),
Entity(2014,07) )
在像这样的集合中:
Map( 2013 -> List(01,03,02) , 2014 -> List(07) )
这是一张地图,其中包含年份作为键,以及月份列表(仅出现一次)作为值。
我该怎么办?
答案 0 :(得分:2)
使用groupBy
操作非常简单:
case class Entity( year: Int, month: Int )
val entities = List( Entity(2013,01), Entity(2013,01), Entity(2013,03),
Entity(2013,02), Entity(2013,02), Entity(2013,02),
Entity(2014,07) )
val mappedEntities = entities.groupBy(_.year)
.mapValues(list => list.map(_.month).distinct)
mappedEntities: scala.collection.immutable.Map[Int,List[Int]] =
Map(2014 -> List(7), 2013 -> List(1, 3, 2))