這裏初始化Scala的幾個變量是代碼的一部分我從Java使用一種方法
class Regex(valCollection: Collection[MyClass3]) {
private val val1 = new HashMap[String, MyClass1]
private val val2 = new HashMap[String, String]
private val val3 = new HashMap[String, MyClass2]
private val filteredValCollection = valCollection.map(x => {
val valCollectionItem = getValCollectionItem(x)
x.key match {
case "123" => val1 + (valCollectionItem -> MyClass1.parse(x.value)) //TODO -- append to val1
case "456" => val2 + (valCollectionItem -> x.value) //TODO -- append to val2
case "789" => val3 + (valCollectionItem -> MyClass2.parse(x.value)) //TODO -- append to val3
}
valCollectionItem
})
def getValCollectionItem = { /*.....*/}
}
1)我想只使用一成不變的館藏和不變性做的初始化所有4個集轉換:val1, val2, val3 and filteredValCollection
。正如你所看到的,filteredValCollection
已初始化,這很好。然而,
case "123" => val1 + (valCollectionItem -> MyClass1.parse(x.value))
返回結果無處以及爲val2
和val3
。
我的想法是,我必須從valCollection.map
返回一個tuple
並初始化所有我想要的集合。
那麼我該怎麼做?
2)由於此代碼來自Java代碼,因此在Scala世界中是否還有更高效的Collection[MyClass3]
模擬?
*有沒有更高效的模擬... *高效的是什麼意思? –
@ om-nom-nom在任何意義上。 –
這個問題跟Java沒有關係,這個標籤必須刪除。您吸引了Java專家的眼睛,他們可以明確地提供幫助,除非他們碰巧也是Scala專家,這也是Scala標籤的用處。 –