Scala集合:将列表转换为地图

Scala集合:将列表转换为地图,scala,collections,Scala,Collections,我需要改造一个像这样的收藏 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 ->

我需要改造一个像这样的收藏

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) )
这是一个以年为键,以月(仅出现一次)列表为值的映射


我该怎么办?

使用
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))

.map(u.month)
之后添加
.distinct
,根据问题将月份列表减少为每个唯一月份一个条目。