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
,根据问题将月份列表减少为每个唯一月份一个条目。