オブジェクトが常に追加され、すべてのオブジェクトが動的であり、それを定義するさまざまなパラメーター (getParam1() など) を含む、非常に大きなオブジェクトの配列があります。
特定のオブジェクトが必要になるたびに配列全体にインデックスを付けることなく、特定のパラメーターを含む配列内のオブジェクトを直接指すことができるデータ型が必要です。
Javaでこの機能を提供するデータ型はありますか、それとも独自に作成する必要がありますか? その場合、どうすればよいでしょうか?
ありがとう。
パラメータごとに1つのマップを維持し、パラメータが変更されたときにそれぞれを更新できます。ミュータブルクラスまたはミュータブルクラスのいずれかを制御できない場合は、オブジェクトを線形検索する以外にできることはほとんどありません。
オブジェクトが常に追加され、すべてのオブジェクトが動的であり、それを定義するさまざまなパラメーター (getParam1() など) を含む、非常に大きなオブジェクトの配列があります。
Anarray
は静的構造体です。常に要素を追加する場合は、List
、 、Set
またはなどの動的コレクションの使用を再検討する必要がありMap
ます。配列の長さを変更せず、配列上のさまざまなオブジェクトを更新するだけであれば問題ありません。それでも、オブジェクトを配置する場所を知る必要があるため、アレイの現在のステータス (インデックス、オブジェクトの量など) を追跡する必要があります。
特定のオブジェクトが必要になるたびに配列全体にインデックスを付けることなく、特定のパラメーターを含む配列内のオブジェクトを直接指すことができるデータ型が必要です。
これには何らかの中間ロジックが必要になります。特定のパラメータを持つオブジェクトを指している場合、複数のオブジェクトがそのパラメータを持つとどうなりますか? どちらが正しいかを定義する必要があります。一方、パラメーターを指す場合は、関連するオブジェクトを知る必要があります。
を使用するのではなく、キーがパラメーターで値がそのパラメーターに関連するさまざまなオブジェクトを含むwith エントリでarray
試してください。Map
Set
パラメーターを 1 つのオブジェクトにのみマップする場合はAMap
で十分ですが、念のため、より複雑な状況について説明します。
オブジェクトが複数の に存在する可能性があることに注意してくださいSet
。これは、2 つのパラメータを見つけるには 2 回マップする必要があるためです。
マップを調べましたが、オブジェクトに関してはあまり理想的ではありません。
あなたの現在のコンテキストと、オブジェクトをどのように識別しているのかわかりません。ID または任意の種類の一意の ID アサーションを持っている場合、Map
のSet
をMap
またはMap
に変更して、特定の関数に関連付けられたオブジェクトを含む Map を取得し、その ID を介して特定のオブジェクトを取得できます。
最後に、何も足りない場合は、ニーズをカバーする構造を作成する必要があります。それでも、すぐにアクセスするには、Map
または非常によく油を塗ったを使用する方がよいでしょうarray
。
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();