scala排序某一类的集合

时间:2014-11-04 11:33:52

标签: scala set sortedset

我创建了一套特定的dto。

dto名为" NumericValue",并具有以下类成员: 1)时间:长 2)价值:双倍

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

附件是代码:

val points: set(NumericValue) = numericValueSet

val setSorted = collection.immutable.SortedSet[Long]() ++ points

我做了以下事情:

但结果并未按时间排序。

由于

1 个答案:

答案 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))