我刚刚开始学习Scala,我可以看到那些类型:Map和Set。对我来说,两者都像字典一样。我什么时候应该使用?
我跟随的例子是使用" Set [(String,String)]"。对我来说,这与使用地图的方式类似。
答案 0 :(得分:2)
Map
存储键和值,并且给定键,返回值(如果键存在于映射中)。所以,一本字典。
val m = Map("sky"->"blue", "grass"->"green")
A Set
存储一个键,并且给定键,返回一个布尔值,指示该键是否在该集合中。它不是字典,因为没有与键相关的值 - 只是存在/不存在。
val s = Set("sky"->"blue", "grass"->"green")
所以Set[(String, String)]
是一组两个字符串的元组。虽然它看起来像'(key,value)`对,但它不是 - 你必须将整个对传递给集合以检查成员身份。你不能只是传递“关键”部分。
s("sky") // error
s("sky"->"blue") // true
s("sky"->"red") // false
Map[String, String]
是一个映射,其中键和值都是字符串。但您可以通过key
并返回value
。
m("sky") // "blue"
m("green") // Error
m("grass") // "green"
m("rock") // Error
答案 1 :(得分:-3)
不可变映射是TrieMap。检查this。所以它包含一个由键值对组成的Trei。
不可变集是一个TrieSet。它只使用键..没有价值部分。 另外,请检查this explanation on Sets。
使用Tries很重要,因为它允许不变性,因此也就是并发性。 Java中没有这样的东西。