1

オブジェクトの配列リストがあるとしましょうObjArray

そのオブジェクトがリスト内で自分自身を見つけ、リストから自分自身を削除する最も効率的な方法は何ですか?

私がよく使う方法は次のとおりです。

  • リスト内のすべてのオブジェクトには、リスト内の位置に対応する ID があります
  • object.remove()呼び出されると、オブジェクトは単純に を呼び出しますObjArray.remove(ID)
  • ObjArray--を呼び出して、インデックス ID から上に向かって解析されますObjArray.get(i).ID。これにより、削除されたオブジェクトの上にあるすべてのオブジェクトが正しい ID に設定されます。

もう 1 つの方法は、もちろんObjArray、一致するオブジェクトが見つかるまで単純に解析することです。

それで、これを行うより良い方法はありますか?orを使用して物事を改善できるArrayList場合は、それで十分です。HashMapLinkedList


要求に応じて詳細情報。

オブジェクトには、画面上のどこに描画する必要があるか、どの画像を描画するかに関する情報が含まれています。メイン JPanelのpaint関数は、タイマーによって呼び出されます。このpaint関数はリストをループしObjArray、オブジェクトの描画関数 ( Obj.draw(Graphics g)) を呼び出します。

オブジェクトは、クリックして追加または削除できます。

オブジェクトが削除されると、ObjArrayリストからそれ自体を削除する必要があります。最初の部分で考えられる2つの方法を述べました。

もっと効率的な方法を知っている人がいたら教えてほしいです。

要するに:アイテムがリスト内の位置を見つけたり知るための最も効率的な方法は何ですか

4

2 に答える 2

2

コードに関して効率的:

list.remove(this); 

もちろん、オブジェクトにはリストへの参照を与える必要があります。


パフォーマンスの面で効率的にするには、おそらくマップを含む小さな再設計が必要ですが、この質問の範囲を超えています。

于 2013-06-16T06:12:12.277 に答える
0

リストの indexOf を使用して ID を取得します。各オブジェクトの ID のアイデアをドロップします。_

于 2013-06-16T05:49:59.943 に答える