1
ListSet或ListMap比Scala中的Set和Map有什麼優勢?與Set和Map相比,ListSet和ListMap是有序集合嗎?ListSet或ListMap比Scala中的Set和Map有什麼優勢
ListSet或ListMap比Scala中的Set和Map有什麼優勢?與Set和Map相比,ListSet和ListMap是有序集合嗎?ListSet或ListMap比Scala中的Set和Map有什麼優勢
是的,他們都在內部使用列表來表示值。 這意味着它們將始終保持元素插入的順序。
在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
存儲它們在反向插入順序的元件。
它們與java不相似。 Java'LinkedHashMap'和'LinkedHashSet'具有恆定的時間查找。 'LinkMap'和'LinkSet'查詢是線性的。 – Dima
我的意思是關於被引擎蓋下的List所支持。 –
我知道。但'LinkedHashMap'不支持列表。它與常規映射具有相同的散列結構,但保留一側的鏈表以跟蹤排序。 – Dima