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 中的最后一个元素。有没有一种特定的方法可以将 a 保存<Vector<Vector<PointF>>到 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

所以你总是只得到你添加到 ArrayList 的最新元素?这表明在向 ArrayList 添加值之前,您要么 clear() ArrayList,要么创建一个全新的空 ArrayList。

您的问题不在您向我们展示的代码中。

尝试添加如下调试输出。如果每次调用 setMyArrayList 时写入 System.err 的对象引用都发生了变化,则表明您在某处创建了一个新的 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 回答
0

我解决了。我必须通过克隆数组来创建一个Object并存储在其中:Vector

Object temp = new Object();

temp =  polyLines.clone();

并将临时值存储在我的Arraylist<Object>.Convert it back toVector<Vector<PointF>>每当我需要使用 arraylist 中的特定元素时。

于 2013-01-03T18:43:10.853 回答