2014-05-16 65 views
-1

我想按順序打印設置(8,9,5,2,6,4,3)。但不是按此順序打印它按此順序打印(9,5,2 ,6,3,4,8)。爲什麼呢?打印設置在斯卡拉

object Main 

{ 

    def main(args: Array[String]) 

    { 

     val fruit = scala.collection.mutable.Set(8,9,8,5,2,6,4,3,5) 

     println("fruit1.++(fruit2) : " + fruit) 

    } 

} 
+1

如果您希望維護廣告訂單,則需要[LinkedHashSet](http://www.scala-lang.org/api/current/#scala.collection.mutable.LinkedHashSet)。 – ggovan

回答

2

集合傳統上是無序的,所以元素的插入順序通常會丟失。列表是有序的,但與集合的不同之處在於它們可以具有重複的元素。

如果您希望使用一個在遍歷其元素時保持插入順序的Set,那麼您將需要使用LinkedHashSet

警告:LinkedHashSet是可變的,ListSet是一個不可變的選項,用於存儲插入順序的反轉。

2

集不是天生排序,但您可以使用SortedSet?有一些不錯的文檔集on the scala webpage.

+0

:但是如果我必須按此順序打印集合(8,9,8,5,2,6,4,3,5)(8,9,5,2,6,4,3)(那是按照它的第一次發生的順序)? – user3186829

+1

我會使用List類型,並在將它添加到列表之前檢查該元素的存在。如果它在那裏,請不要添加它。 – Chad

1

集是無序的數據類型。使用有序集合(例如SortedSet或TreeSet),並將其傳遞給一個自定義的排序算法,以根據它何時添加到集合中進行排序。

您將不得不創建自己的數據類型,其中包含您要存儲的整數值以及表示輸入時間的日期屬性。

另一個選項 您可以使用ArrayList或其他列表類型。而不是直接添加一個元素,而是調用你自己的add方法,該方法用contains方法檢查元素是否已經存在。

希望這會有所幫助。

+0

:ArrayList不存在於Scala中。 – user3186829

+0

任何列表類型都可以,或者您可以使用Java ArrayList。 – Chad