0

HashMap に 3 種類のオブジェクトを格納します。

HashMap<String, ArrayList<Car>>

['Lorry', [list of lorries]]
['Sport', [list of sport's cars]]

HashMap 文字列キーは、オブジェクトのタイプ (Car のサブクラス) を保持し、2 番目の要素は、ID、日付などの属性を持つオブジェクトを配列に格納します。

私がしなければならない主な4つのことは次のとおりです。

  1. タイプに関する情報が提供されていない場合に、特定の ID が HashMap に存在するかどうかを確認します
  2. 指定されたタイプの特定の ID の要素を出力します。
  3. 特定のタイプのすべての要素を出力する
  4. 各オブジェクトが割り当てた特定の属性が「true」などのブール値を持つ場合、コレクションから (異なる型の) すべての要素を出力します。

HashMap は適切な構造ですか? 最初のポイントになると問題があると思います。コレクション全体をトラバースする必要があるようですが、そうであれば、そのような要件に適した他のコレクションは何ですか?

4

2 に答える 2

2

基本的なアプローチは適切ですが、各インスタンスを 1 回だけ保存する必要があるため、マップ エントリ値にSetは a よりも a を選択することをお勧めします。List

Map<String, Set<Car>> typeCache = new HashMap<String, HashSet<Car>>();

contains()メソッドHashSetは非常に高速であるため、マップの値に特定のインスタンスが含まれているかどうかを確認するのにそれほどコストはかかりません。

ただし、 2 つのマップを使用する方がおそらく良いでしょう。ルックアップの種類ごとに 1 回なので、以下も使用します。

Map<String, Object> idCache = new HashMap<String, Object>();
于 2012-09-02T20:44:04.467 に答える
0

AHashMapはジョブに適したデータ構造ですが、あなたのケースでは 2 つの HashMap を使用することを検討してください。 「そのIDの車」。

于 2012-09-02T20:43:46.910 に答える