5
A
回答
13
由於集數據結構是,根據定義,無序:http://en.wikipedia.org/wiki/Set_(data_structure)
爲了MOR e精確的,Clojure的內置集合(其中#{blah blah blah}
爲您提供)是一個哈希集合 - 即由哈希表(http://en.wikipedia.org/wiki/Hash_tables)支持的集合。它爲您提供以下保證:
- 每個元素的唯一性(不允許重複)。
- O(1)插入和包容檢查的性能特徵。
- 迭代工作 - 調用
seq
將爲您提供集合中的每個元素,但是以未定義的順序。
未定義的順序在這裏意味着迭代順序取決於您在集合中插入的元素,它們的編號,插入它們的順序,您可能在之前設置的所有其他操作,和其他各種實施細則可能從語言版本更改爲其他(甚至之間實現 - 你可能會,也可能會,獲得Clojure的,Clojure的不同的結果在64位JVM上運行,或ClojureScript)。
重要的是要帶走的是,如果你正在編寫與套(或地圖)代碼工作,從來沒有讓它依賴於說套/地圖的順序任何概念。它會中斷。
12
#{3 1 22 44}
是Clojure中,這是不按順序排列set。
因此,當您對一個集合執行seq
時,生成的seq的順序是任意的(但每次在此實例上調用seq時都是一樣的)。
如果您想對該組進行排序,您可以使用sorted-set
相關問題
- 1. PYTHON 3中float(44 * 2.2)和(float)(44 * 2.2)的區別是什麼?
- 2. 爲什麼(#(+%1)3)工作但(#(%)3)在Clojure中不起作用?
- 3. android.database.CursorIndexOutOfBoundsException:索引-1請求,大小爲22
- 4. 爲什麼(3&0x1111)= 1?
- 5. 爲什麼1 +++ 2 = 3?
- 6. Android MediaPlayer錯誤(1,-22)
- 7. 試圖找出K&R C ex 1-22
- 8. 在csh中,爲什麼4 - 3 + 1 == 0?
- 9. 爲什麼我得到22/3 itprog〜1.pas致命:語法錯誤,;預期但ELSE發現
- 10. 爲什麼(1 + 3)[a]與[1 + 3]相同?
- 11. 爲什麼字符串[1 ..- 1]的工作,但不串[-3..1]
- 12. IE VS Chrome的新日期( 「22/22/22」)
- 13. 爲什麼「dict(Runoob = 1,Google = 2,Taobao = 3)」會在「dict(1 = 1,2 = 2,3 = 3)」的時候編譯而不是在python中?
- 14. 蟒蛇的1/3和1./3之間有什麼區別
- 15. 爲什麼「double z = 1/3」導致0.0?
- 16. 爲什麼NUM = 1 - - 「2」 等於3個
- 17. 爲什麼`(state == 1 && 3)`有意義?
- 18. 用23-48交換1-22行
- 19. 爲什麼設置errno爲22:mq_open()POSIX
- 20. 爲什麼在這個Clojure宏上執行macroexpand-1時會出現NullPointerException異常?
- 21. 1 + 1/2 + 1/3 + - + 1/n =?
- 22. 在Linux shell腳本中,'x = $ {1:3:1}'是什麼意思?
- 23. 我有一個包含3個函數的Clojure seq。爲什麼(rest my-seq)給出「不能作爲」異常?
- 24. 爲什麼這個java程序的結果是'44'?
- 25. 爲什麼在嘗試在iOS Swift 3中使用dateFormatter時會出現nil?
- 26. lisp中'((1 2)(3 4))和'('(1 2)'(3 4))之間的區別是什麼?
- 27. 爲什麼-2?爲什麼不是-3或-1?
- 28. 爲什麼在Doom 3源文件中存在assert(sizeof(bool)== 1)?
- 29. 將「1/3」替換爲「1/3.0」的模式
- 30. 如何計算0111爲0 + 1 + 1 + 1 = 3在php中