在Scala中,ListSet或ListMap优于Set和Map的优点是什么?

时间:2017-10-08 13:13:56

标签: scala

Listala或ListMap优于Scala中的Set和Map有什么优势?与Set和Map相比,ListSet和ListMap是一个有序集合吗?

2 个答案:

答案 0 :(得分:2)

是的,它们都在内部使用List来表示值。 这意味着它们将始终保持元素插入的顺序。

在Java中,有一些名为LinkedHashMapLinkedHashSet的集合,它们的性质非常相似。

但是ListMapListSet会导致head等操作的O(n)复杂性,插入或删除条目。仅lastinit是恒定时间操作。

例如:

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 

请注意,ListMapListSet都会按相反的顺序存储其元素。

答案 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