【发布时间】:2019-12-19 15:28:50
【问题描述】:
我有一个案例类
case class Employee(name: String, age: Int, joinedDate: Instant)
我有一份员工名单
val employees: List[Employee]
拥有多名员工。
我想根据多个字段对列表进行排序,例如,当多个员工具有相同姓名时,排序应该按年龄,同样,当他们具有相同年龄时,排序应该在joinedDate 上,这意味着我需要多级排序。排序参数可以是任意顺序。
scala 中有一个sortBy 方法,它对多列进行排序,即
employees.sortBy(e => (e.name, e.age))。但这是静态的,我需要动态的。请注意,排序字段具有不同的数据类型,例如 Instant、Int 和 String。
这可以实现吗??
【问题讨论】:
-
也许只是一个接一个地做多个
sortBy? -
@amer 当然,第二个 sortBy 会破坏第一个创建的顺序。
-
@AlexeyRomanov 不,不会,因为
sortBy是稳定的。您只需要首先按最不重要的字段进行排序。在这个例子中,顺序是joinedDate然后age然后name。
标签: scala sorting dynamic collections