结构按值而不是键排序

时间:2016-01-24 15:24:51

标签: scala

在Scala中,我需要创建一个包含以下内容的结构:

  • a Bitset - 代表一些被占用或未被占用的单元格
  • Int - 最后一个单元格占用
  • Int - 此职业的费用

因为元素由表示占用单元格的Bitset和代表最后一个单元格的Int的组合唯一标识,我尝试使用以下内容:

var tm = TreeMap.empty[Path, Int]

Path的位置:

case class Path(occupied: BitSet, last: Int)

然而,问题是我想按{0}成本对其中的元素进行排序(因此按其值)。 TreeMap显然无法做到这一点。

那么我可以有一个结构,我按Value而不是Key对元素进行排序吗?

1 个答案:

答案 0 :(得分:2)

我认为你会找一个排序集:

import scala.collection.immutable.BitSet
import scala.collection.immutable.SortedSet

case class Path(occupied: BitSet, last: Int, cost: Int)

implicit val pathOrd = Ordering.by((p: Path) => p.cost)

SortedSet.empty[Path]

假设costPath的字段。如果费用是根据Path计算的,您还可以定义:

case class Path(occupied: BitSet, last: Int) {
  def cost: Int = ???
}