Listala或ListMap优于Scala中的Set和Map有什么优势?与Set和Map相比,ListSet和ListMap是一个有序集合吗?
答案 0 :(得分:2)
是的,它们都在内部使用List来表示值。 这意味着它们将始终保持元素插入的顺序。
在Java中,有一些名为LinkedHashMap
和LinkedHashSet
的集合,它们的性质非常相似。
但是ListMap
和ListSet
会导致head
等操作的O(n)复杂性,插入或删除条目。仅last
和init
是恒定时间操作。
例如:
scala> val x = Set(1,2,4,456,23,5,3)
scala> x.foreach(println)
5 1 456 2 3 23 4 3
scala> val y = ListSet(1,2,4,456,23,5,3)
scala> y.foreach(println)
3 5 23 456 4 2 1
请注意,ListMap
和ListSet
都会按相反的顺序存储其元素。
答案 1 :(得分:0)
ListSet和ListMap现在可以确保插入顺序遍历(在2.11.x中,遍历是相反的顺序),并且它们的性能得到了改善(#5103)。
scala> val y = ListSet(1,2,4,456,23,5,3)
scala> y.foreach(println)
1 2 4 456 23 5 3