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 ???
嗯... TreeMap
在 scala.collection.immutable
包中找到。
注意 immutable
事情。所以 TreeMap
是不可变的数据结构,这意味着......你不能就地修改它。没有插入,没有更新,根本没有变化。但是您可以获得应用了这些修改的另一个副本。
所以...要修改,您必须将 a.orders
重新分配给修改后的副本。
a.orders = a.orders + ( 5, 100 )
如果您想要一个可变结构,您可以使用 scala.collection.mutable.Map
代替 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 ???
嗯... TreeMap
在 scala.collection.immutable
包中找到。
注意 immutable
事情。所以 TreeMap
是不可变的数据结构,这意味着......你不能就地修改它。没有插入,没有更新,根本没有变化。但是您可以获得应用了这些修改的另一个副本。
所以...要修改,您必须将 a.orders
重新分配给修改后的副本。
a.orders = a.orders + ( 5, 100 )
如果您想要一个可变结构,您可以使用 scala.collection.mutable.Map
代替 TreeMap
。