理想的には、問題/解決策ドメインにとって自然なことが、理想的な選択であることが理想的です。キー<クラス、ブール>はドメイン内の何かを表しますか? ブール値、文字列>はドメイン内のすべてのものを表しますか? 1レベルまたは2レベルの間接参照を使用すると、最終的に非表示にする実装の詳細になる可能性があります。
しかし、純粋にパフォーマンスの決定であれば、他のすべてのものは同等です(たとえば、アクセスパターンは一方向または他のものに優先しません、良いハッシュ関数、スパースマップなど)、私はHashMapと思うでしょう< Key < X、Y >、Z>はHashMapより高速です< X、地図< Y、Z > > - 私は、より大きいHashMapで1ルックアップが小さいマップで2ルックアップより速いと思っています。
あなたがブールの鍵を持っているので、また、代わりに2つのHashMapのテーブル(真と偽のための1つに1つ)と、いくつかの三項演算子(:)魔法を考えてみます?
final Map<Class, String> falseMap = new HashMap<Class, String>();
final Map<Class, String> trueMap = new HashMap<Class, String>();
final String s = ((booleanKey ? trueMap: falseMap).get(classKey));
マップが関数であるので、あなたが望むことをやるための最も自然な方法は、私たちが知らないビジネスロジックに依存するので、何をしていますか? – akappa
クライアントは値(文字列)にアクセスする必要があり、クエリ速度は5000 /秒です。 Map、string>またはMap >のいずれかです。 –
user117736
クラスは何を表していますか?実際のクラスそのものでこれを行うことは可能ですか? –