2015-04-23 127 views
1

这是一个Scala新手问题。Scala:修改TreeMap中的值

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

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 ??? 
+1

http://www.scala-lang.org/api/current/index.html#[email protected][B1>:B](key:A,value:B1):scala。 collection.immutable.TreeMap [A​​,B1]? –

+0

一种方法是再次插入:a.orders + =(5 - > 100)。这是否正确? – Lazylabs

回答

2

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

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

因此...要修改,您将不得不将a.orders重新分配给修改的副本。

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

如果你想有一个可变的结构,你可以在你的地方的TreeMap使用scala.collection.mutable.Map