Scala 订购不需要';不要挂断分拣数据集

Scala 订购不需要';不要挂断分拣数据集,scala,Scala,我有一个定义了顺序的类: case class Offer(id: Int, amount: Int, interestRate: Double) extends Ordered[Offer] { def compare(that: Offer) = that.interestRate.compareTo(this.interestRate) } val currentOffers: SortedSet[Offer] = SortedSet.empty[Offer](Orderin

我有一个定义了顺序的类:

case class Offer(id: Int, amount: Int, interestRate: Double) extends Ordered[Offer] {

  def compare(that: Offer) = that.interestRate.compareTo(this.interestRate)

}
  val currentOffers: SortedSet[Offer] = SortedSet.empty[Offer](Ordering[Double].on[Offer](_.interestRate))
我声明了一个SortedSet of
Offer
,其中我还定义了相同的排序:

case class Offer(id: Int, amount: Int, interestRate: Double) extends Ordered[Offer] {

  def compare(that: Offer) = that.interestRate.compareTo(this.interestRate)

}
  val currentOffers: SortedSet[Offer] = SortedSet.empty[Offer](Ordering[Double].on[Offer](_.interestRate))
不过,如果我补充:

Offer(1, 5, 4.0)
Offer(2, 5, 0.5)
Offer(3, 5, 1.5)
然后我使用
currentOffers.min
提取最小元素,得到:

Offer(1, 5, 4.0)
而不是:

Offer(2, 5, 0.5)

为什么不尊重订单?

尊重订单
min
使用您提供的对象的默认顺序,并且它向后排序(
比较此
而不是
此比较此
——这是您的意图还是错误?)
min
不是特定于已排序集合的,它可以处理任何事情

如果要使用提供的排序,请使用
head
SortedSet
,它的全部要点是将元素从最小到最大排序。而不像
min
,它会检查所有的东西,只是为了确定,
head
只会得到已经排在前面的东西

诚然,
min
head
SortedSet
上不一定是相同的,这有点不直观,但至少有一点理由解释为什么