我很有兴趣了解以最有效的方式修改不可变集合的模式。修改不可变集合的习惯性方法
假设例如我要定义下面的类(实际的实现可能超载运营商,但是这仅仅是为了说明)。这是最好的方式(关于性能/安全性)?
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我明白了,这种情况下的变种是必要的,以使这种方法的工作。不要声称这是做这件事的最好方式。问题的关键是以一种惯用的方式向专家询问更好的方法。 –