Scala - 如何在没有模式匹配的情况下对元组列表进行分组?

Jer*_*erg 3 scala tuples group-by

考虑以下结构(实际上结构有点复杂):

case class A(id:String,name:String) {
   override def equals(obj: Any):Boolean = {
      if (obj == null || !obj.isInstanceOf[A]) return false
      val a = obj.asInstanceOf[A]
      name == a.name
   }

   override def hashCode() = {
      31 + name.hashCode
   }
}

val a1 = A("1","a")
val a2 = A("2","a")
val a3 = A("3","b")
val list = List((a1,a2),(a1,a3),(a2,a3))
Run Code Online (Sandbox Code Playgroud)

现在让我们说我想将所有元组分组为相同的A. 我可以像这样实现它

list.groupBy {
  case (x,y) => (x,y)
}
Run Code Online (Sandbox Code Playgroud)

但是,我不喜欢在这里使用模式匹配,因为它不会在这里添加任何内容.我想要一些简单的东西,比如:

list.groupBy(_)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不编译.我甚至不这样做:

list.groupBy[(A,A)](_)
Run Code Online (Sandbox Code Playgroud)

有什么建议如何简化我的代码?

Jör*_*tag 8

list.groupBy { case (x,y) => (x,y) }
Run Code Online (Sandbox Code Playgroud)

在这里,你将元组解构为它的两个组成部分,只是为了立即重新组装它们,就像以前一样.换句话说:你实际上并没有做任何有用的事情.输入和输出是相同的.这与之相同

list.groupBy { t => t }
Run Code Online (Sandbox Code Playgroud)

这当然只是身份功能,Scala帮助我们提供:

list groupBy identity
Run Code Online (Sandbox Code Playgroud)