我被困在试图管理列表列表的列表中。我已经声明并初始化了我的数据结构:
List<Vector<ArrayDeque<Vector_t>>> mData = new ArrayList<Vector<ArrayDeque<Vector_t>>>(
6);
for (int i = 0; i < 6; ++i) {
mData.add(i, new Vector<ArrayDeque<Vector_t>>());
// mData.get(i).setSize(200);
}
for (int i = 0; i < 6; i++) {
for (int k = 0; k < 200; k++) {
mData.get(i).add(new ArrayDeque<Vector_t>());
mData.get(i).get(k).add(new Vector_t());
}
}
其中 Vector_t 是:
class Vector_t {
float x;
float y;
float z;
}
这个初始化正确吗?在最后一个位置向数组 deque 添加值时,它会用最后一个元素替换整个 arraydeque,我不知道为什么。
此外,当我使用代码更改值时mdata.get(1).get(42)
,元素所在的mdata.get(0).get(40)
位置也会受到影响。再说一次,我不知道为什么?
例如,我给出了硬编码的值。这是我添加的方式
if (mData.get(dir.value).get(slice).size() >= sMaxNum_c)
{
mData.get(dir.value).get(slice).removeFirst();
}
mData.get(dir.value).get(slice).addLast(result.acc);
当向一个方向添加值时,其他方向值正在改变......:(
请帮我解决这个问题。