コンピュータサイエンスにおいて、マルチマップ(マルチハッシュ、マルチディクショナリ、マルチディクショナリとも呼ばれる)は、マップまたは連想配列という抽象データ型を一般化したもので、特定のキーに対して複数の値を関連付けて返すことができる。マップとマルチマップはどちらもコンテナの特殊なケースである(例えば、C++標準テンプレートライブラリのコンテナを参照)。多くの場合、マルチマップはマップの値としてリストまたはセットを持つマップとして実装される。
C++の標準テンプレートライブラリは、自己平衡二分探索木を使用してソートされたマルチマップのmultimapコンテナを提供します。[ 1 ]また、SGIの STL 拡張機能は、ハッシュテーブルを使用してマルチマップを実装するコンテナを提供します。[ 2 ]hash_multimap
C++11以降、標準テンプレートライブラリは、unordered_multimap順序なしマルチマップを提供します。 [ 3 ]
QuiverはDart用のマルチマップを提供します。[ 4 ]
Apache Commons Collections はJava用の MultiMap インターフェースを提供します。[ 5 ]また、Map オブジェクトと Collection の型から MultiMap を作成する MultiValueMap 実装クラスも提供します。[ 6 ]
Google GuavaはMultimapインターフェースとその実装を提供します。[ 7 ]
Kotlin にはマルチマップの明示的なサポートはありませんが[ 8 ] 、値型にコンテナ[ 9 ]を使用したマップを使用して実装できます。たとえばMap<User, List<Book>>、各ユーザーを本のリストに関連付けることができます。
Python には、collections.defaultdictマルチマップを作成するために使用できるクラスが用意されています。ユーザーは、次のようにクラスをインスタンス化できますcollections.defaultdict(list)。
OCamlの標準ライブラリモジュールは、Hashtbl1つのキーに対して複数の値を格納できるハッシュテーブルを実装しています。