在Scala中,我需要创建一个包含以下内容的结构:
Bitset
- 代表一些被占用或未被占用的单元格Int
- 最后一个单元格占用Int
- 此职业的费用因为元素由表示占用单元格的Bitset
和代表最后一个单元格的Int
的组合唯一标识,我尝试使用以下内容:
var tm = TreeMap.empty[Path, Int]
Path
的位置:
case class Path(occupied: BitSet, last: Int)
然而,问题是我想按{0}成本对其中的元素进行排序(因此按其值)。 TreeMap
显然无法做到这一点。
那么我可以有一个结构,我按Value而不是Key对元素进行排序吗?
答案 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]
假设cost
是Path
的字段。如果费用是根据Path
计算的,您还可以定义:
case class Path(occupied: BitSet, last: Int) {
def cost: Int = ???
}