Scala:修改 TreeMap 中的值

Scala : modify values in a TreeMap

这是一个 Scala 新手问题。

我正在 TreeMap 中存储一些数据,其中的值不断修改。例如,在下面 class 中有一张地图,其中包含发送到市场的订单,我想跟踪订单数量和每个价格。这张地图会随着进入市场的每个订单而变化。

class MyData {
    // Price -> Quantity map
    var orders: TreeMap[Int, Int] = TreeMap.empty
}

现在,当新订单的价格为 100 时,我可以将其添加到地图中。

var a = new MyData;
// new order at price 5 with qty 200
a.orders += (5 -> 200)

现在,价格为 5 的订单已修改为 100。如何使用 TreeMap 执行此操作?

a.orders ???

嗯... TreeMapscala.collection.immutable 包中找到。

注意 immutable 事情。所以 TreeMap 是不可变的数据结构,这意味着......你不能就地修改它。没有插入,没有更新,根本没有变化。但是您可以获得应用了这些修改的另一个副本。

所以...要修改,您必须将 a.orders 重新分配给修改后的副本。

a.orders = a.orders + ( 5, 100 )

如果您想要一个可变结构,您可以使用 scala.collection.mutable.Map 代替 TreeMap