考虑以下结构(实际上结构有点复杂):
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))
现在假设我想将所有具有相等 A 的元组分组。我可以这样实现
list.groupBy {
case (x,y) => (x,y)
}
但是,我不喜欢在这里使用模式匹配,因为它没有在这里添加任何东西。我想要一些简单的东西,像这样:
list.groupBy(_)
不幸的是,这不能编译。即使我这样做:
list.groupBy[(A,A)](_)
有什么建议可以简化我的代码吗?