セット (抽象データ型)
(集合_(プログラミング) から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/04/12 16:23 UTC 版)
ナビゲーションに移動 検索に移動セット(英: set)あるいは集合とは、コンピュータプログラミングで用いられる抽象データ型の一種。順序のないデータの集まりを表現する抽象データ型であり、同一のデータは一つしか含まれないことが保証される。
重複したデータの挿入
データの同一性は与えられた比較関数で判定されるので、外の文脈で同一かどうかは関数依存である。例えば文字列"hoge"
と"HOGE"
は異なるデータと見ることもできるし、大文字・小文字を区別せずに比較すれば(常に大文字化あるいは小文字化したもの同士を比較すれば)同一のデータと見ることもできるといった具合である。
そのような重複するデータを挿入しようとした場合はこれを処理する必要がある。
- 無視する
- 新しい物で置き換える
- 多重化する(→マルチセット参照)
狭義のセットにおいては重複データは無視されるか新しいデータで置き換えるかされる。もしここで多重化することを選択した場合は複数回の削除を行わなければ値は完全に取り除かれない。
アクセス速度は実装により様々だが、二分木(TreeSet)やハッシュテーブル(HashSet)などのデータ構造を用いて高速化を図ることが多い。
その他の抽象データ型との違い
- リストはそれぞれのデータに順序が定義される点が異なる。
- 配列は順序が定義されるほか、静的配列ではさらに格納可能な要素数が変更できない。
- マルチセットは同じデータを複数格納できるが、狭義のセットでは重複したデータは無視される。マルチセットはbagとも呼ばれる。
各プログラミング言語におけるセット
- C++ - 標準テンプレートライブラリに
std::set
および要素の重複を許容するstd::multiset
が定義されている。C++11では、これらに加えてstd::unordered_set
およびstd::unordered_multiset
が追加された。 - Java - インタフェース
java.util.Set
を実装するjava.util.TreeSet
やjava.util.HashSet
など - .NET Framework - System.Collections.Generic.ISet (.NET 4以降) を実装するSystem.Collections.Generic.SortedSet (.NET 4以降) やSystem.Collections.Generic.HashSet (.NET 3.5 SP1以降) など
- Python - ミュータブルな
set
型と、イミュータブルなfrozenset
型がある。[1] - Ruby - 標準添付の
set
ライブラリにSet
クラスと、ソートされた順番で取り出されるSortedSet
クラスがある。[2]
参照
関連項目
|
|
「集合 (プログラミング)」の例文・使い方・用例・文例
- 理論とは相互に関連した概念の集合のことをいう
- 動物の生態;【集合】動物
- 理論とは関連した概念の集合のことである
- さあ皆さん,デモのために集合しよう
- 先生は生徒に体育館に集合するよう指図した
- 空集合
- 集合住宅の場合、2,000円の工事料金が必要だ
- 彼が早速本日の集合予定場所に移動する
- 本社の東棟正面に集合。
- 集合体として行動する
- 乗組員は上部甲板に集合した。
- 個別には「政党」と呼ばれ、集合的には「複数の政党」と呼ばれる。
- 私たちはまだ集合時間と集合場所を決めていない。
- 明日は11時に集合しよう。
- どこに何時に集合すればよいでしょうか。
- 12時にここに集合してください。
- 集合場所と集合時間を教えてください。
- 明日は何時に集合ですか?
- 業務スタートの30分前に施設内の指定場所に集合する。
- そして私たちは私の家に集合しました。
- 集合_(プログラミング)のページへのリンク