概要
他の言語でいう配列、リスト、マップ、ディクショナリーのようなコレクション型についてまとめました。
環境
- Elixir 1.1.1
- Erlang/OTP 18 [erts-7.1]
tuple
データやサイズの取得が早いリスト。更新は linked list より遅い。
{"abc", :def, 3, true}
主な操作
- tuple_size/1
- elem/2
- put_elem/3
- Tuple API
linked list
データの更新が早いリスト。データの取得やサイズの取得は tuple より遅い。
["abc", :def, 3, true]
主な操作
map
key-value ストア。
%{ "abc" => :xyz, :def => "lmn", 2 => true}
主な操作
Range
数字の範囲を表します。
1..10
主な操作
keyword list
key-value ストア。key は atom のみ。
特殊な tuple の linked list なので linked list と同じ特徴を持っています。
[abc: "xyz", def: true, h: :lmn]
[{:abc, "xyz"}, {:def, true}, {:h, :lmn}]
主な操作
- hd/1
- tl/1
- length/1
- left ++ right
- left -- right
- Keyword API
- List API
- Dict API : KV系の構造全てに使えます。
- Enum API
HashDict
将来廃止予定。 map に十分なパフォーマンスがあります(erlang 18以降)。
key-value ストア。 データ量が多いときに map や keyword list より効率的に動作します。
MapSet
ユニークな値のリスト。
[:sunday, :monday, :tuesday] |> Enum.into(MapSet.new)
主な操作