私はグループにグループ化したいリストを持っていて、グループごとに最大値を取得します。たとえば、ユーザーのアクションのリストは、ユーザーごとの最後のアクションを取得します。ScalaでMaxByを使用する方法
case class UserActions(userId: String, actionId: String, actionTime: java.sql.Timestamp) extends Ordered[UserActions] {
def compare(that: UserActions) = this.actionTime.before(that.actionTime).compareTo(true)
}
val actions = List(UserActions("1","1",new java.sql.Timestamp(0L)),UserActions("1","1",new java.sql.Timestamp(1L)))
私は、次のGROUPBYを試してみてください。
actions.groupBy(_.userId)
私は大丈夫ですが、私はmaxByを追加しようとしたとき、私はエラーを取得する地図
scala.collection.immutable.Map[String,List[UserActions]] = Map(1 -> List(UserActions(1,1,1970-01-01 00:00:00.0), UserActions(1,1,1970-01-01 00:00:00.001))
受け取る:
をactions.groupBy(_.userId).maxBy(_._2)
<console>:13: error: diverging implicit expansion for type
Ordering[List[UserActions]]
starting with method $conforms in object Predef
actions.groupBy(_.userId).maxBy(_._2)
変更する必要はありますか?
おかげ ニール