0

私には解決できない簡単な質問があります。Vector<Vector<PointF>>ArrayList に保存したいオブジェクトがあります。私はこれをやってみました:

ArrayList<Vector<Vector<PointF>>> my_arraylist = new ArrayList<Vector<Vector<PointF>>>();

そして次のように保存します:

 public void setMyArrayList(Vector<Vector<PointF>> polyLines) {
        my_arraylist.add(polyLines);
        this.my_arraylist = my_arraylist;
 }

my_arraylist で特定の要素を取得しようとすると、常に my_arraylist の最後の要素が取得されます。<Vector<Vector<PointF>>aを ArrayListに保存する特定の方法はありますか?

4

3 に答える 3

0

初期化に少し問題がありました

ArrayList<Vector<Vector<PointF>>> my_arraylist = new ArrayList<Vector<Vector<PointF>>>();

、およびいくつかの不要なコードを削除しました:

public void setMyArrayList(Vector<Vector<PointF>> polyLines) {
    my_arraylist.add(polyLines);
}

なぜこれがうまくいかないのか、理由はわかりません。

于 2013-01-02T23:06:22.463 に答える
0

私はそれを解決しました。ArrayObjectを複製してを作成し、そこに格納する必要がありました。Vector

Object temp = new Object();

temp =  polyLines.clone();

arraylistで特定の要素を使用する必要があるときはいつでも、一時値をArraylist<Object>.変換して元に戻します。Vector<Vector<PointF>>

于 2013-01-03T18:43:10.853 に答える
0

では、常に ArrayList に追加した最新の要素のみを取得しますか? これは、ArrayList に値を追加する前に、ArrayList を clear() するか、まったく新しい空の ArrayList を作成することを示唆しています。

あなたの問題は、あなたが私たちに示したコードにはありません。

以下のようなデバッグ出力を追加してみてください。System.err に書き込まれたオブジェクト参照が setMyArrayList を呼び出すたびに変更される場合は、どこかで新しい ArrayList を作成し、そこに追加したすべての古い値を破棄していることを示しています。ロギング フレームワークがある場合は、それを使用します。

public void setMyArrayList(Vector<Vector<PointF>> polyLines) {
    System.err.println("Appending to ArrayList " + my_arraylist + ", size " + my_arraylist.size());
    my_arraylist.add(polyLines);
    this.my_arraylist = my_arraylist;
}
于 2013-01-03T08:02:03.580 に答える