GoogleのグアバやApacheコモンズでさえ双方向マップを提供していることを私は知っています。しかし、それらがどのように実装されているのか知りたいです。私が見つけた小さなことから、最も簡単な方法は、2つの別々のマップを使用してキー/値と値/キーのデータを格納することです。しかし、確かにもっと良い方法がありますか?確かに、Googleの実装はこれほど簡単ではありませんか?魔法はどこにありますか?
ありがとう!
どうやらそれだけです(ルイス・ワッサーマン)。
考えてみれば、ある種の双方向マップは、実際には単一のObject-> Objectマップで実装でき、(key、value)ペアが各方向に1回ずつ、2回マップに挿入されます。明示的な逆ビューを必要としない限り、それは機能します。キーと値が同じタイプである場合(同じオブジェクトをキーと値にすることができる)、特定のキーと値の間に単一のマッピングしか持てません(O1->O2はO2->O1を意味します) )、従来のBiMapでは、効果的に2つ持つことができます(O1->O2と逆O2->O1およびO3->O1と逆O1->O3)。ただし、多くの双方向マップのニーズには、単一マップソリューションで十分です。