我有以下课程:
final case class PowerDetails (
[...],
label: String,
title: String,
category: String,
idCategory: Option[String],
numCategory: Option[Int]
)
我需要对PowerDetails
这样的列表进行排序:
具有
idCategory
and 值的元素numCategory
应该在, 之前并按 andNone
排序 。至于值,它们需要按字段 , ,进行排序。idCategory
numCategory
None
category
title
label
如果可能的话,我想避免延长Ordered
final case class PowerDetails (
...
) extends Ordered[PowerDetails] {
override def compare(that: PowerDetails): Int = {
// Define here the comparison
}
}
我尝试如下创建一个订购,然后使用该sorted
功能,但我得到一个NullPointerException
implicit val orderingPowers = optionOrdering.thenComparing(ordering)
val ordering: Ordering[PowerDetails] = Ordering[(String, String, String)]
.on[PowerDetails](powerDetail =>
( powerDetail.category, powerDetail.title, powerDetail.label))
val optionOrdering : Ordering[PowerDetails] = Ordering[(Option[String], Option[Int])]
.on[PowerDetails](powerDetail =>
(powerDetail.idCategory, powerDetail.numCategory))
你能帮我看看怎么做吗?谢谢。