2017-09-23 63 views
2

Elixir中陣列最接近什麼。我的意思是數組,我可以在一段時間內訪問一個容器。Elixir中陣列最接近的東西

我已經看了元組,而是根據documentation

元組並不意味着作爲一個「收藏」型(也由於缺乏可枚舉的實現的建議協議元組):它們通常意味着用作多個元素的固定大小的容器。

我真正想要做的: 我想存儲ñ過程中的陣列並定期選擇一個隨機過程,併發送一條消息。 我也接受其他建議。

+0

您是否希望能夠移除和插入進程? – Dogbert

+0

@Dogbert:我會添加一次流程,但我需要刪除流程(不太頻繁的操作)來模擬節點下降。 –

+1

元組有'O(n)'刪除。我會把它存儲在一個Map中,它需要'O(log n)'來訪問/插入/刪除。在Erlang/Elixir中沒有數據結構,具有「O(1)」訪問並且比'O(n)'刪除更快。 – Dogbert

回答

1

我結束了使用的listregistry的組合,因爲我用流程工作。我得到了很多Elixir forum迴應這我下面的清單以供將來參考:在複製整個結構存儲在內存中,不斷的訪問時間連續,編輯結果:

  1. Tuple不是實現枚舉協議。
  2. linked-List:O(n)訪問時間,前綴比後綴更便宜。實現可枚舉協議。
  3. Map:O(log n)讀取,寫入,刪除時間。還實現Enumerable協議。
  4. :arrayarray來自Erlang的模塊。
  5. registry :(只適用於存儲過程)本地,分散和可擴展的鍵值過程存儲。

另外,注2和3(列表和地圖)are persistent data structures