2010-04-11 86 views

回答

7

這是預期的行爲。 HashMap作爲Map的具體實施方式是最有用的,涉及使用散列表進行查找。

通常情況下,你會說var values: Map[String, Any] = new HashMap,然後坐下來使用它,就好像它是普通的ol'immutable Map

你有沒有理由讓你的代碼知道它是一個HashMap後,你已經new'如上所述?

+0

Aaaaaah,我明白了。最後我得到了我的代碼工作!謝謝! – 2010-04-11 20:43:40

+0

很高興我能幫到你。 – sblom 2010-04-11 20:44:01

7

如果你使用2.7,這是因爲隨着時間的推移,集合庫已經變得與各種實現類不一致,而不是專門化某些方法的返回類型。這是2.8版集合庫重新設計中修復的問題之一。

如果您使用2.8,這是因爲update方法已被棄用,您應該使用updated來代替。這正確地專門化了返回值。

scala> HashMap(1->1, 2->2, 3->3, 4->4).updated(1,3) 
res4: scala.collection.immutable.HashMap[Int,Int] = Map((2,2), (4,4), (1,3), (3,3)) 
2

在2.7.x,它返回一個Map,因爲它可能是一個ListMapTreeMap或什麼的,它被認爲是太多的工作,每次重新定義方法。

在2.8.x中,它應該返回一個HashMap - 但您必須使用updatedupdate已被棄用)。

相關問題