リストのリストのリストを管理しようとして立ち往生しています。データ構造を次のように宣言および初期化しました。
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;
}
この初期化は正しいですか?最後の位置で配列両端キューに値を追加すると、配列両端キュー全体が最後の要素に置き換えられますが、その理由はわかりません。
また、コードを使用して値を変更すると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);
一方向に値を追加すると、他の方向の値が変化しています...:(
これを解決するのを手伝ってください。