Scala 斯卡拉:这两者有什么区别;“地图”;vs";设置“;?

Scala 斯卡拉:这两者有什么区别;“地图”;vs";设置“;?,scala,dictionary,set,Scala,Dictionary,Set,我刚刚开始学习Scala,我可以看到这些类型:Map和Set。对我来说,这两本书都像字典。我应该什么时候使用 我下面的例子是使用“Set[(String,String)]”。对我来说,这与地图的使用方式相似。不可变地图是一种地图。检查因此它包含一个由键值对组成的树 不可变集是一个集合。它只使用钥匙。。没有价值的部分。 还有,检查一下 使用trytes很重要,因为它允许不可变性,从而允许并发性。Java中没有这样的东西。Map存储键和值,给定键,返回值(如果键在映射中)。所以,一本字典 val m

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


我下面的例子是使用“Set[(String,String)]”。对我来说,这与地图的使用方式相似。

不可变地图是一种地图。检查因此它包含一个由键值对组成的树

不可变集是一个集合。它只使用钥匙。。没有价值的部分。 还有,检查一下


使用trytes很重要,因为它允许不可变性,从而允许并发性。Java中没有这样的东西。

Map存储键和值,给定键,返回值(如果键在映射中)。所以,一本字典

val m = Map("sky"->"blue", "grass"->"green")
集合
存储一个键,给定该键,返回一个布尔值,指示该键是否在集合中。它不是字典,因为没有与键相关联的值-just present/no present

val s = Set("sky"->"blue", "grass"->"green")
因此,
Set[(String,String)]
是一组由两个字符串组成的元组。虽然它看起来像一个“(key,value)`对,但它不是-您必须将整个对传递给集合以检查成员身份。你不能只传递“关键”部分

Map[String,String]
是键和值都是字符串的映射。但是您可以传递
并返回

m("sky") // "blue"
m("green") // Error
m("grass") // "green"
m("rock") // Error

请告诉我们你是如何使用Set作为字典的。。你到底是如何使用Set作为映射的?通过巧妙地使用
.hashCode
,你可能会使一组2元组的行为像一个键值映射,但至少可以这么说,这会非常奇怪。正如Silvio Mayolo所说,我所遵循的示例类似于“Set[(String,String)]”。这就是为什么我把集合和映射混淆了。一个
Set[String,String]
将允许同一个键用于多个值。我看不出作为一本字典会有什么用。我看到的唯一相似之处是
映射
不允许重复键,
不允许重复元素。在那之后,他们就大不一样了。这并不能真正回答OP的问题,尽管非常感谢。对我来说更有意义。
m("sky") // "blue"
m("green") // Error
m("grass") // "green"
m("rock") // Error