简体   繁体   English

案例类对象上的Scala groupBy

[英]Scala groupBy on case class object

I want to group by on class instance(object)我想在类实例(对象)上分组

// Below code fails to compile // 下面的代码无法编译

  case class Employee(name:String,division:Int)

    val employees = List(Employee("Sumeet",1),Employee("Mahesh",2),Employee("Rhoit",1),Employee("Nexus",2))

     def groupByEmployee(list:List[Employee]):Map[Employee,List[Employee]] = {
        list groupBy(_)
      }

groupByEmployee(employees)

// But this works when i use specific attibute // 但是当我使用特定的属性时这有效

case class Employee(name:String,division:Int)

val employees = List(Employee("Sumeet",1),Employee("Mahesh",2),Employee("Rhoit",1),Employee("Nexus",2))

 def groupByEmployee(list:List[Employee]):Map[Int,List[Employee]] = {
    list groupBy(_.division)
  }

groupByEmployee(employees)

groupBy takes a function that returns the value to group by. groupBy接受一个函数,该函数返回要分组的值。 _.division is Scala short hand for (x) => x.division _.division(x) => x.division Scala (x) => x.division

If you want to group by the identity of a case class instance (eg, Employee("Sumeet", 1) and Employee("Sumeet", 1) group together, but Employee("Sumeet", 2) does not), then you'd want to use hashCode in your groupBy.如果您想按案例类实例的身份进行分组(例如, Employee("Sumeet", 1)Employee("Sumeet", 1)分组在一起,但Employee("Sumeet", 2)不分组),则您想在 groupBy 中使用hashCode Eg, groupBy(_.hashCode)例如, groupBy(_.hashCode)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM