scala - Scala不变 map 与元组列表

标签 scala list dictionary tuples

不可变的Map和Scala中的元组列表有什么区别?我什么时候应该使用它们?如果两者都可行,哪一个更可取?

最佳答案

两种数据结构完全不同。

1. Map查找时间是O(1)。在列表中将是O(n)
因此,如果需要在键->值映射中查找元素,请使用map

scala> val myMap = Map("a" -> 1, "b" -> 2, "c" -> 3)
myMap: scala.collection.immutable.Map[String,Int] = Map(a -> 1, b -> 2, c -> 3)

scala> myMap.get("a")
res7: Option[Int] = Some(1)

scala> myMap.getOrElse("a", 0)
res8: Int = 1

scala> myMap("a")
res9: Int = 1

正如其他人指出的那样:其他两个主要区别是:

2. Map中的键必须唯一
scala> val myList = List(("a", 1), ("b", 2), ("a", 3))
myList: List[(String, Int)] = List((a,1), (b,2), (a,3))

scala> myList.toMap
res0: scala.collection.immutable.Map[String,Int] = Map(a -> 3, b -> 2)

3. Map是无序的
scala> Map("a" -> 1, "b" -> 2, "c" -> 3, "d" -> 4, "e" -> 5).toList
res2: List[(String, Int)] = List((e,5), (a,1), (b,2), (c,3), (d,4))

关于scala - Scala不变 map 与元组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43420810/

相关文章:

python - 查找低于/高于阈值的第一个值的索引

python - 在某些步骤后加入字符串

python - 从嵌套字典构建类

scala - 如何避免子类的伴生对象中的代码重复

scala - 在 Scala 解释器中包含 jar 文件

Python:如何获取字典中可能的键组合

python - 展平双嵌套 JSON

algorithm - 如何在随机生成的六角形 map 中找到岛屿?

scala - 如何实现多个Silhouette Authenticator?

scala - 如何从json字符串中提取值?