簡體   English   中英

Clojure列表與向量對集

[英]Clojure list vs. vector vs. set

我是Clojure的新手。 如果這是一個愚蠢的問題,請道歉!

每次我不關心項目的順序時,我應該使用集合而不是向量或列表嗎? 在沒有必要訂購時,在這三者之間做出決定的共同標准是什么?

這實際上取決於你將如何使用這些物品。

  • 如果您要搜索項目,請使用一組。
  • 如果您將按順序處理它,請使用列表。
  • 如果您將它切成均勻大小的塊(如排序時),請使用矢量。
  • 如果需要計算長度,請使用向量。
  • 如果您要手動輸入這些,請使用矢量(以節省一點引用)

在實踐中,我看到的大多數處理涉及將數據轉換為seq並進行處理,因此列表和向量之間的區別通常是個人品味。

一般來說,當你的主要關注點是“這個群體中的這個東西嗎?”時,你需要一個集合。 除了不保留順序之外,集合也只保持給定值一次。 因此,如果您關心值的精確放置,矢量就更符合您的要求。 如果您主要關心會員資格的測試,則更合適。

是的,使用一套。 除非你有非常好的理由選擇其他東西(性能,內存使用......),否則這個集合是正確的選擇。

請記住,編程主要是與代碼的人類讀者進行通信,而不是與計算機進行通信。 通過使用集合,您可以完全清楚元素的順序是無關緊要的(並且您不期望重復的值),幫助讀者理解您的意圖和您自己的心理思維定勢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM