2013-02-02 39 views
16

我是Clojure的新手。道歉,如果這是一個愚蠢的問題!Clojure列表與矢量對比集

我應該使用一套而不是一個向量或列表每次我不關心項目的順序?訂單沒有必要時,在這三者之間做出決定的共同標準是什麼?

+1

謝謝你們,所有的好回答我upvoted每個答案。 – Blacksad

回答

19

這真的取決於你將如何使用物品。

  • 如果您要搜索項目,請使用一套。
  • 如果您將按順序使用列表進行處理。
  • 如果你將它切成均勻大小的塊(如同時排序)使用矢量。
  • 如果您需要計算長度,請使用矢量。
  • 如果你會打字這些手工使用矢量(節省一點報價)

在實踐中,大多數我看到包括把數據變成一個seq和加工處理,如此列表之間的區別和矢量往往是個人品味的事情。

+3

套數也計算在內。 – amalloy

+1

列表也被計算在內。 – kotarak

9

一般來說,當你的主要關注點是「這是這個組中的東西嗎?除了不保存秩序外,集合也只保持一次給定值。所以如果你關心值的確切位置,一個矢量更多的是你想要的。如果你主要關心測試會員,一套更合適。

2

是的,使用一套。除非你有非常非常好的理由選擇別的東西(性能,內存使用,...),否則該組是正確的選擇。

請記住,編程主要是與代碼的人類閱讀器進行通信,而不是與計算機進行通信。通過使用一個集合,你完全清楚元素的順序是不相關的(並且你不期望重複的值),幫助讀者理解你的意圖和你自己的心智思維集。