我很有興趣瞭解以最有效的方式修改不可變集合的模式。修改不可變集合的習慣性方法
假設例如我要定義下面的類(實際的實現可能超載運營商,但是這僅僅是爲了說明)。這是最好的方式(關於性能/安全性)?
import scala.collection.immutable.HashMap
class Example[A,B] {
var col = new HashMap[A, B]()
def add(k: A, v: B): Unit = col = col + (k -> v)
def remove(k: A): Unit = col = col - k
}
這種方法是否可能,以某種方式,我錯過了?
class Example[A,B] extends HashMap[A,B] {
def add(k: A, v: B): Unit = ???
def remove(k: A): Unit = ???
}
我知道我可能聽起來很明顯,但最有效的方法是不使用不可變集合:在這種情況下,使用可變映射 –
om-nom-nom是正確的私有val會更好。一旦你使用了'var',你已經引入了不變性。通過將'var'的類型作爲一個不可變的集合,你並不清楚。 – Owen
@ om-nom-nom我明白了,這種情況下的變種是必要的,以使這種方法的工作。不要聲稱這是做這件事的最好方式。問題的關鍵是以一種慣用的方式向專家詢問更好的方法。 –