scala排序某一类的集合

use*_*773 0 scala set sortedset

我创建了一套特定的dto.

dto名为"NumericValue",并具有以下类成员:1)time:Long 2)value:Double

我有一个名为"点"的集合,我想根据增加的时间对其进行排序,即0,1,2,4,100 ......

附件是代码:

val points: set(NumericValue) = numericValueSet

val setSorted = collection.immutable.SortedSet[Long]() ++ points
Run Code Online (Sandbox Code Playgroud)

我做了以下事情:

但是结果没有按时间排序.

谢谢

Ser*_*tin 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)
}
Run Code Online (Sandbox Code Playgroud)

Ordering为您的集合创建:

val set = SortedSet[NumericValue]()(new Ordering[NumericValue]() {
  override def compare(x: NumericValue, y: NumericValue): Int =
    Ordering[Long].compare(x.time, y.time)
})
Run Code Online (Sandbox Code Playgroud)

结果应该订购:

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))
Run Code Online (Sandbox Code Playgroud)