連想配列
連想配列(れんそうはいれつ)とは、コンピュータプログラミングにおいて、添え字にスカラー数値以外のデータ型(文字列型等)も使用できる配列である。抽象データ型のひとつ。連想リスト、連想コンテナ、辞書とも呼ばれる。
歴史的には、最初に LISP の連想リストとして広く認知された。その後、SNOBOL で table
として、AWK で連想配列として実装したことで、その潜在能力がさらに広く知られるようになった。現在、Ruby など一部の言語では、添え字にはどのようなデータでも使えるものもある。
データ構造
連想配列の実装に使われるデータ構造としては、主に平衡2分探索木(赤黒木やAVL木など)やハッシュテーブルがある。ほかにはB木や連想リストなどが利用されることもある。
連想配列を標準で提供する主な言語
- AWK
- C++ — 標準ライブラリのクラス
std::map
で提供(ハッシュではなく、二分木による実装。)ハッシュを使ったstd::unordered_map
も提供している。 - D言語
- ECMAScript (JavaScript) - すべてのオブジェクトが、文字列が添え字の連想配列として扱われる
- Icon
- Java — Java Platform, Standard Edition標準パッケージの
、Map
、HashMap
、TreeMap
、LinkedHashMap
で提供。その他 Apache Commons Collections などでも提供。Hashtable
- LISP — キーとデータで構成された cons セル[1]のリストを連想配列として(
car
部をキーに
cdr
部をデータ、またはその逆)として使う関数(assoc
、rassoc
)が提供されている。 - Lua
- .NET Framework -
System.Collections.Hashtable
、System.Collections.Specialized.ListDictionary
、System.Collections.Specialized.HybridDictionary
、System.Collections.Generic.Dictionary
にて提供。(ただしDictionary
は CLR 2.0 以降) - SNOBOL
- PL/SQL — 結合配列 (Oracle Database 9i 以降)
- PHP - 配列と連想配列の区別がない
- Python — 「辞書型 (dictionary)」という名前で呼ばれる
- Perl —
%
で始まる変数が連想配列 - REXX
- Ruby — 組み込みのクラス
Hash
で提供 - Smalltalk
- Visual Basic
- Visual Basic for Applications
脚注
関連項目