0

オブジェクトが常に追加され、すべてのオブジェクトが動的であり、それを定義するさまざまなパラメーター (getParam1() など) を含む、非常に大きなオブジェクトの配列があります。

特定のオブジェクトが必要になるたびに配列全体にインデックスを付けることなく、特定のパラメーターを含む配列内のオブジェクトを直接指すことができるデータ型が必要です。

Javaでこの機能を提供するデータ型はありますか、それとも独自に作成する必要がありますか? その場合、どうすればよいでしょうか?

ありがとう。

4

3 に答える 3

1

パラメータごとに1つのマップを維持し、パラメータが変更されたときにそれぞれを更新できます。ミュータブルクラスまたはミュータブルクラスのいずれかを制御できない場合は、オブジェクトを線形検索する以外にできることはほとんどありません。

于 2013-01-20T01:45:44.523 に答える
1

オブジェクトが常に追加され、すべてのオブジェクトが動的であり、それを定義するさまざまなパラメーター (getParam1() など) を含む、非常に大きなオブジェクトの配列があります。

Anarrayは静的構造体です。常に要素を追加する場合は、List、 、Setまたはなどの動的コレクションの使用を再検討する必要がありMapます。配列の長さを変更せず、配列上のさまざまなオブジェクトを更新するだけであれば問題ありません。それでも、オブジェクトを配置する場所を知る必要があるため、アレイの現在のステータス (インデックス、オブジェクトの量など) を追跡する必要があります。

特定のオブジェクトが必要になるたびに配列全体にインデックスを付けることなく、特定のパラメーターを含む配列内のオブジェクトを直接指すことができるデータ型が必要です。

これには何らかの中間ロジックが必要になります。特定のパラメータを持つオブジェクトを指している場合、複数のオブジェクトがそのパラメータを持つとどうなりますか? どちらが正しいかを定義する必要があります。一方、パラメーターを指す場合は、関連するオブジェクトを知る必要があります。

を使用するのではなく、キーがパラメーターで値がそのパラメーターに関連するさまざまなオブジェクトを含むwith エントリでarray試してください。MapSet

パラメーターを 1 つのオブジェクトにのみマップする場合はAMapで十分ですが、念のため、より複雑な状況について説明します。

オブジェクトが複数の に存在する可能性があることに注意してくださいSet。これは、2 つのパラメータを見つけるには 2 回マップする必要があるためです。

マップを調べましたが、オブジェクトに関してはあまり理想的ではありません。

あなたの現在のコンテキストと、オブジェクトをどのように識別しているのかわかりません。ID または任意の種類の一意の ID アサーションを持っている場合、MapSetMapまたはMapに変更して、特定の関数に関連付けられたオブジェクトを含む Map を取得し、その ID を介して特定のオブジェクトを取得できます。

最後に、何も足りない場合は、ニーズをカバーする構造を作成する必要があります。それでも、すぐにアクセスするには、Mapまたは非常によく油を塗ったを使用する方がよいでしょうarray

于 2013-01-20T02:08:16.260 に答える
0

Map配列の代わりに a を使用します。

Map<String, MyObject> map = new HashMap<String, MyObject>();

MyObject o;
String someId = o.getId();  // use some identifying id for your objec

map.put(someid, o); // do this for all your objects

次に、取得する必要がある場合:

MyObject o = map.get(someId);

すべてのオブジェクトが必要な場合 (可能ですが、ほとんどありません):

List<MyObject> objects = map.getValues();
于 2013-01-20T02:14:32.847 に答える