Scala使用正确的命名映射groupBy而不是元组中的_._ 1

时间:2018-03-23 11:40:57

标签: scala maps

Scala map包含作为元组的键。如何在不使用_._ 1的情况下基于元组中的元素进行分组,因为_1的使用不太可读。

示例:

val m = Map((1,true,"case0") -> List(1,2), (2,false,"case0") -> List(3,4), 
(1,true,"case1") -> List(2,4))

如果我必须按键分组。 1,我们可以使用groupBy( ._ 1._1)进行分组。我们可以使用case语句执行相同的操作并避免使用_1吗?

2 个答案:

答案 0 :(得分:5)

你可以做到

m.groupBy{case (key, _) => key._1}

并且更进了一步

m.groupBy{case ((key, _,_), _) => key}

答案 1 :(得分:1)

为密钥创建案例类

case class Key(id: Int, flag:Boolean, name:String)

val m = Map(Key(1,true,"case0") -> List(1,2), 
            Key(2,false,"case0") -> List(3,4), 
            Key(1,true,"case1") -> List(2,4))

m.groupBy(_._1.id)