この項目では、プログラミングでのデータ構造について説明しています。数学については「集合」をご覧ください。
セット(英: set)や集合とは、プログラミングで用いられる抽象データ型の一種。順序のないデータの集まりを表現する抽象データ型であり、同一のデータは一つしか含まれないことが保証される。 データの同一性は与えられた比較関数で判定されるので、外の文脈で同一かどうかは関数依存である。例えば文字列"hoge"と"HOGE"は異なるデータと見ることもできるし、小文字化したものを比較すれば同一のデータと見ることもできるといった具合である。 そのような重複するデータを挿入しようとした場合はこれを処理する必要がある。 狭義のセットにおいては重複データは無視されるか新しいデータで置き換えるかされる。もしここで多重化することを選択した場合は複数回の削除を行わなければ値は完全に取り除かれない。 アクセス速度は実装により様々だが、二分木(TreeSet)やハッシュテーブル(HashSet)などのデータ構造を用いて高速化を図ることが多い。
目次
1 重複したデータの挿入
2 その他の抽象データ型との違い
3 各プログラミング言語におけるセット
4 参照
5 関連項目
重複したデータの挿入
無視する
新しい物で置き換える
多重化する(→マルチセット参照)
その他の抽象データ型との違い
リストはそれぞれのデータに順序が定義される点が異なる。
配列は順序が定義されるほか、静的配列ではさらに格納可能な要素数が変更できない。
マルチセットは同じデータを複数格納できるが、狭義のセットでは重複したデータは無視される。マルチセットはbagとも呼ばれる。
各プログラミング言語におけるセット
C++ - 標準テンプレートライブラリに ⇒std::setおよび要素の重複を許容する ⇒std::multisetが定義されている。C++11では、これらに加えて ⇒std::unordered_setおよび ⇒std::unordered_multisetが追加された。
Java - インタフェースSet
Python - ミュータブルなset型と、イミュータブルなfrozenset型がある。[1]
Ruby - 標準添付のsetライブラリにSetクラスと、ソートされた順番で取り出されるSortedSetクラスがある。[2]
参照^ 4. 組み込み型 ? Python 3.6.5 ドキュメント
表
話
編
歴
データ構造
データ型
コレクション(英語版)
コンテナ
タプル
リスト
配列
可変長
連結リスト
キュー
両端キュー
優先度付きキュー
スタック
スパゲッティスタック
リングバッファ
スキップリスト
連想配列
ハッシュテーブル
ハッシュ関数
コンシステントハッシュ法
分散ハッシュテーブル
マルチマップ(英語版)
セット
マルチセット
素集合データ構造
木
二分木
二分探索木
二重連鎖木
平衡木(英語版)
2-3木
2-3 フィンガーツリー
2-3-4木
B木
B+木
B*木
平衡二分探索木
AA木
AVL木
赤黒木
スプレー木
Treap
木の回転
ヒープ
二分ヒープ
二項ヒープ
フィボナッチヒープ
トライ木
一般
基数木
接尾辞木
接尾辞配列
接尾辞オートマトン
三分探索木
整数
二分トライ木
x-高速トライ木
y-高速トライ木
BSP木
四分木
八分木
kd木
計算幾何学
区間木
R木
グラフ
有向グラフ
有向非巡回グラフ
二分決定グラフ
ハイパーグラフ
カテゴリ
表
話
編
歴
データ型
ビット(列)
ビット
バイト
トリット
ワード
数値
整数型
符号