セット_(抽象データ型)
[Wikipedia|▼Menu]

この項目では、プログラミングでのデータ構造について説明しています。数学については「集合」をご覧ください。

セット(: set)や集合とは、プログラミングで用いられる抽象データ型の一種。順序のないデータの集まりを表現する抽象データ型であり、同一のデータは一つしか含まれないことが保証される。
目次

1 重複したデータの挿入

2 その他の抽象データ型との違い

3 各プログラミング言語におけるセット

4 参照

5 関連項目

重複したデータの挿入

データの同一性は与えられた比較関数で判定されるので、外の文脈で同一かどうかは関数依存である。例えば文字列"hoge"と"HOGE"は異なるデータと見ることもできるし、小文字化したものを比較すれば同一のデータと見ることもできるといった具合である。

そのような重複するデータを挿入しようとした場合はこれを処理する必要がある。

無視する

新しい物で置き換える

多重化する(→
マルチセット参照)

狭義のセットにおいては重複データは無視されるか新しいデータで置き換えるかされる。もしここで多重化することを選択した場合は複数回の削除を行わなければ値は完全に取り除かれない。

アクセス速度は実装により様々だが、二分木(TreeSet)やハッシュテーブル(HashSet)などのデータ構造を用いて高速化を図ることが多い。
その他の抽象データ型との違い

リストはそれぞれのデータに順序が定義される点が異なる。

配列は順序が定義されるほか、静的配列ではさらに格納可能な要素数が変更できない。

マルチセットは同じデータを複数格納できるが、狭義のセットでは重複したデータは無視される。マルチセットは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 ドキュメント
^library set (Ruby 2.1.0)

関連項目

集合

素集合データ構造










データ構造
データ型

コレクション(英語版)

コンテナ

タプル

リスト
配列

可変長


連結リスト

キュー

両端キュー

優先度付きキュー


スタック

スパゲッティスタック


リングバッファ

スキップリスト

連想配列
ハッシュテーブル

ハッシュ関数

コンシステントハッシュ法

分散ハッシュテーブル


マルチマップ(英語版)

セット
マルチセット

素集合データ構造

二分木

二分探索木

二重連鎖木

平衡木(英語版)
2-3木

2-3 フィンガーツリー


2-3-4木

B木
B+木

B*木

平衡二分探索木
AA木

AVL木

赤黒木

スプレー木

Treap

木の回転

ヒープ
二分ヒープ

二項ヒープ

フィボナッチヒープ

トライ木

一般

基数木

接尾辞木

接尾辞配列

接尾辞オートマトン


三分探索木

整数
二分トライ木

x-高速トライ木

y-高速トライ木


BSP木
四分木

八分木

kd木

計算幾何学
区間木

R木


グラフ
有向グラフ

有向非巡回グラフ

二分決定グラフ

ハイパーグラフ

カテゴリ










データ型
ビット(列)

ビット

バイト

トリット

ワード

数値
整数型

符号


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:19 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef