連想配列
出典: フリー百科事典『ウィキペディア(Wikipedia)』
連想配列(れんそうはいれつ)とは、コンピュータプログラミングにおいて、添え字にスカラー数値以外のデータ型(文字列型等)も使用できる配列である。抽象データ型のひとつ。連想リスト、連想コンテナ、辞書、ハッシュとも呼ばれる。
歴史的には、最初に LISP の連想リストとして広く認知された。その後、SNOBOL で table
として、AWK で連想配列として実装したことで、その潜在能力がさらに広く知られるようになった。現在、Ruby など一部の言語では、添え字にはどのようなデータでも使えるものもある。
データ構造
連想配列の実装に使われるデータ構造としては、主に平衡2分探索木(赤黒木やAVL木など)やハッシュテーブルがある。ほかにはB木や連想リストなどが利用されることもある。
連想配列を標準で提供する主な言語
- AWK
- C++ — 標準ライブラリのクラス
std::map
として提供されている。これはハッシュではなく二分木により実装されている。ハッシュを使いたstd::unordered_map
も提供される。 - D言語
- ECMAScript (JavaScript) - すべてのオブジェクトが、文字列が添え字の連想配列として扱われる
- Icon
- Java — Java Platform, Standard Edition標準パッケージの
テンプレート:Javadoc:SE
,テンプレート:Javadoc:SE
,テンプレート:Javadoc:SE
,テンプレート:Javadoc:SE
,テンプレート:Javadoc:SE
で提供。その他 Apache Commons Collections などでも提供。 - 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 以降) - PL/SQL — 結合配列 (Oracle Database 9i 以降)
- PHP - 配列と連想配列の区別がない
- Python — 「辞書型 (dictionary)」という名前で呼ばれる
- Perl —
%
ではじまる変数が連想配列。要素には$hash{$key}
としてアクセスする(通常の配列は@
で宣言し、要素へは$array[$index]
としてアクセス)。同言語で連想配列を(その実装から)「ハッシュ」と呼び始めたことから、「ハッシュ」が連想配列の別名として定着した。 - REXX
- Ruby — 組み込みのクラス
Hash
で提供 - Smalltalk
- SNOBOL
- Swift
- Visual Basic
- Visual Basic for Applications