不可变的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/