变换scala内部地图

时间:2014-01-29 17:07:13

标签: scala

嘿,我有这样的地图:

val valueParameters = Map("key1"->"value","anotherkey1"->"value","thirdkey1"->"value","key2"->"value","anotherkey2"->"value","thirdkey2"->"value")

和模式:

val pattern = """(?<=[a-zA-Z])\d{1,2}""".r

val result =  valueParameters.groupBy(x=>pattern.findAllIn(x._1).next().toInt).toSeq.sortBy(_._1).toMap

给出:Map[Int,Map[String,String]我想从第二张地图的第一个字符串中删除我不再需要的数字,所以我可以:result(1)(“key”)不是result(1)( “KEY1”)

1 个答案:

答案 0 :(得分:3)

这应该有效

val result1 = result.map { case (k,v) => 
  k -> v.map { case (a,b) => 
    val a1 = a.takeWhile(! _.isDigit)
    a1 -> b
  } 
}

请注意,虽然使用mapValues会导致代码更短,但mapValues是一个惰性操作,每次访问地图时都会执行计算,而映射条目会导致计算完成一次,这通常是您所期望的在斯卡拉。

相关问题