我创建了一套特定的dto。
dto名为" NumericValue",并具有以下类成员: 1)时间:长 2)价值:双倍
我有一个名为" points"的集合,我想根据增加的时间对其进行排序,即0,1,2,4,100 ......
附件是代码:
val points: set(NumericValue) = numericValueSet
val setSorted = collection.immutable.SortedSet[Long]() ++ points
我做了以下事情:
但结果并未按时间排序。
由于
答案 0 :(得分:9)
结果未排除,因为您的课程没有Ordering
。
您可以明确实施Ordered
:
case class NumericValue(time: Long, value: Double) extends Ordered[NumericValue] {
override def compare(that: NumericValue): Int =
Ordering[Long].compare(this.time, that.time)
}
或为您的集创建Ordering
:
val set = SortedSet[NumericValue]()(new Ordering[NumericValue]() {
override def compare(x: NumericValue, y: NumericValue): Int =
Ordering[Long].compare(x.time, y.time)
})
应该订购结果:
set + NumericValue(345, 45) + NumericValue(453, 123) + NumericValue(5, 5)
res0: scala.collection.SortedSet[NumericValue] = TreeSet(NumericValue(5,5.0), NumericValue(345,45.0), NumericValue(453,123.0))