Scala:" Map"之间的区别是什么? vs" Set"?

时间:2017-07-16 21:12:27

标签: scala dictionary set

我刚刚开始学习Scala,我可以看到那些类型:Map和Set。对我来说,两者都像字典一样。我什么时候应该使用?

我跟随的例子是使用" Set [(String,String)]"。对我来说,这与使用地图的方式类似。

2 个答案:

答案 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中没有这样的东西。