2

一連のオブジェクトをArrayListにロードし、後でArrayListから直接使用できるように、追加された場所のインデックスを返したいと思います。グラフィック用に5つのフレームのセットをロードし、リストから直接フレーム3のデータを呼び出すのと似ています。
関連している可能性のあるいくつかの潜在的な投稿を見回したとき、私は関連している何かを見つけて、私は不思議に思いました。最近追加されたオブジェクトのインデックスを取得するための組み込み関数もありますか?

私が見ているリンクは、これを思い起こさせました:ArrayList indexOf()は間違ったインデックスを返しますか?

基本的に、私がそれを見ていた方法は、次の擬似コードの線に沿って何かをするというものでした。

    private ArrayList<FrameData> mylistofframeshere = new ArrayList();
    FrameData Framenumberone = new FrameData(constructorblah goes in here);
    int wherediditgo = mylistofframeshere.add(Framenumberone);

または私は私がの線に沿って何かをすることができると思った

    mylistofframeshere.getindex(Framenumberone);

私のコーディングのバックグラウンドは、この時点ではより手続き型であるため、データを最初に配置するためだけに、インデックスが何であるかを知ることに慣れています。私はオラクルのドキュメントも見て回りましたが、上記のリンクに似たものが見つかりました。助言がありますか??

編集:私は実際に例と説明に十分な努力を払っていなかったので、ここにいくつかの追加の説明を追加するつもりです。

リストの直接インデックスのようなものを使用しようとする別の例は、ゲームなどの地形として使用したいタイルのセットがある場合です。エリアの可能なタイルのセットを中央のArrayListにロードします。これらのタイルを配置しようとすると、適切なビットマップなどを描画するために、ArrayListにあるプリロードされたオブジェクトを参照するだけです。

私はまだJavaに少し慣れていないので、これらのデータ型を使用するメカニズムで見落としている単純なものであると確信しています。説明が正しくなるまでこれを編集し続けます。

4

4 に答える 4

6

に何かを追加するArrayListと、最後に使用可能なスペースに移動します。言い換えると:

List<FrameData> list = new ArrayList<FrameData>();
list.add(frame1);

FrameData frame = list.get(list.size() - 1); //frame == frame1

しかし、なぜあなたはそれをする必要があるのだろうか。あなたが達成しようとしていることについてもっと説明するなら、同じ結果を得るための別の/より良い方法があるかもしれません。

于 2012-05-09T10:33:34.937 に答える
2

次のようなメソッドがあります。ArrayList.indexOf(object);そのメソッドを使用してオブジェクトのインデックスを取得してみてください

于 2012-05-09T10:36:16.953 に答える
0

それはすべて、インデックスを何に使用したいかによって異なります。リスト内の各要素をキーにマップして、後でそのキーを使用して要素を取得できるようにする必要がある場合は、HashMapの使用を検討する必要があります。注文に関心がある場合は、リストを使用できます。誰かがすでに答えているように、リストに要素を追加すると、インデックスが増加します。事前に持っているフレームの総数がわかっている場合は、コンストラクターに引数としてサイズを渡すことでArrayListを初期化し、list.add(0...sizeでインデックスを手動で指定して各フレームを追加できます。 -1、要素)。

要するに、

  1. 単に独自のキー/インクリメントされたキーで保存および取得する場合は、HashMapを使用します。
  2. 順序が重要な場合は、リストを使用してください。
于 2012-05-09T10:54:32.753 に答える
0

このように使用する代わりに、を使用ArrayListできますMap<Integer,FrameData>Integerプロジェクトに適したものに置き換えることができます。

于 2012-05-09T10:57:22.417 に答える