私は Java でリアルタイム アプリケーションを使用する作業を行っています。次のようなデータ構造があります。
HashMap<Integer, Object> myMap;
今では、これは必要なデータを保存するのに非常にうまく機能しますが、データを取り出すときに私を殺します. 私が遭遇する根本的な問題は、私が呼び出す場合
Collection<Object> myObjects = myMap.values();
Iterator<object> it = myObjects.iterator();
while(it.hasNext(){ object o = it.next(); }
クラスで反復子とコレクションを変数として宣言し、反復ごとに割り当てますが、コレクションの反復処理が非常に遅くなります。これはリアルタイム アプリケーションであるため、1 秒あたり少なくとも 25 回繰り返す必要があります。
プロファイラーを見ると、更新ごとにイテレーターの新しいインスタンスが作成されていることがわかります。
問題を解決するためにハッシュマップを変更する可能性のある2つの方法を考えていました。1. イテレータを何らかの方法でキャッシュしますが、それが可能かどうかはわかりません。2. hashmap.values() の戻り値の型を、コレクションではなくリストを返すように変更する可能性があります。 3. 別のデータ構造を使用しますが、何を使用できるかわかりません。