私は次のクラスを持っています:
final case class PowerDetails (
[...],
label: String,
title: String,
category: String,
idCategory: Option[String],
numCategory: Option[Int]
)
このようなリストをソートする必要がありますPowerDetails
:
idCategory
と の値を持つ要素は、 のnumCategory
前に配置しNone
、 と の順に 並べる必要が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
以下のように Ordering を作成してから関数を使用しようとしましたが、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))
その方法を教えてください。ありがとう。