2015-04-23 72 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