を検索、我々はより良いオブジェクトのリンクのマップを実装するように求めていました。要するにJavaのHashMapの継続的なクラスのプロジェクトの一環として
、我々は現在のオブジェクトに保持4つのArrayListを持って
// Array Lists used for sorting.
private static ArrayList<Party> partyList = new ArrayList<Party>();
private static ArrayList<Creature> creatureList = new ArrayList<Creature>();
private static ArrayList<Treasure> treasureList = new ArrayList<Treasure>();
private static ArrayList<Artifact> artifactList = new ArrayList<Artifact>();
各クラスは、独自のフィールドを有する(すなわち、党は「インデックス」、「名前」、クリーチャーが持つ「インデックス」、「名前」を持っています、「年齢」、高さ」、等...しかし、彼らすべてが一意のインデックスを持っている)
今週はオブジェクトのキーは、そのインデックスでハッシュマップを実装している。
ので、 、例として:
creatureMap.put(creature.index, creature)
...
私たちのプログラムも検索できます。だから私はインデックスで検索するとき、私たちが望むインデックスに対して適切なハッシュマップを検索し、その値であるオブジェクトで作業することを理解しています。
しかし、私たちのプログラムは、インデックスで検索する場合、それが唯一の場合に役立ちますハッシュマップを効率的にここで使用されているか、ユーザーがそう名前、身長、体重などによって検索することができますか?私が名前で生き物を検索したい場合はどうなりますか?私は、ハッシュマップのすべての値をループしなければならないでしょう、その '名前'フィールドを見てください。これは、私がarraylistとやっているものです。
アイデアが最初のプロジェクトでは、単純なアプローチは インサートに配列リストにすべての項目だったということです、もう1つは をリンクするために必要なとき:誰かが同様の質問をしたときに
私たちの教授はこのように述べクリーチャーをパーティーに参加させるか、クリーチャーにアイテムを渡す場合、アイテムのインデックスが見つかるまで、 はArrayListを直線的に検索する必要があります。 リストをソートするが、ソートは、典型的には、O(N * N) またはO(Nログn)依存である場合、これは、ArrayListのがソートされていない場合はO(N)操作であり、O(Nログ) 操作使用されたソート操作で
今週、私はマップデータ構造に基づいて、 O(1)検索システムを実装するためにあなたを求めています。したがって、リンクの生成には、項目のインデックスを とする必要があります。これは、入力ファイル の処理中に1回使用されます。
このように、Maps/Key-Valueペアの概念を正しく理解しているかどうかはわかりません。
を考えていません。入力ファイルには、オブジェクトを作成する行が含まれています。たとえば、(p:001:週末の戦士)その行はパーティオブジェクトを作成するように指示し、そのインデックスは001で、その名前は週末の戦士です。同様に、クリーチャーはそのようになりますが、それに属するパーティーである別のインデックスも持ちます(c:250:conan:001) – sqram
右。だからリストバージョンのコードでは、パーティー#001を見つけるためにリストを繰り返し処理しなければなりません。これにより、ファイル読込みのコードが比較的遅くなります(ループするパーティーがたくさんあるとき)。マップバージョンは、反復的な[O(n)]ルックアップの代わりにインデックス[O(1)]ルックアップを実行することによって、ファイル読み取りコードを高速化します。 – Tim
ありがとうございます。私は2つの答えを受け入れることを望みます= | – sqram