如何创建一个如下所示的数组:
[[1,2,[[3,3,3,3,3],[4,4,4,4,4]],[15,20],35,[2,1]],
[2,2,[[6,6,6,6,6],[1,2,3,4,5]],[30,15],45,[2,1]],
[2,2,[[6,6,6,6,6],[1,2,3,4,5]],[30,15],45,[2,1]],
[2,2,[[6,6,6,6,6],[1,2,3,4,5]],[30,15],45,[2,1]],
...]
所以一个 4 维数组,只保存整数值,并且数组在数组中但深度不等。
[编辑]使用命名元素我会得到这个声明:
// containerarray spelersSpel:
private ArrayList<ArrayList<ArrayList<ArrayList<Integer>>>> spelersSpel_ = new ArrayList<ArrayList<ArrayList<ArrayList<Integer>>>>();
// holding:
// first-level element of spelersSpel:
private ArrayList<ArrayList<ArrayList<Integer>>> spelerSpel = new ArrayList<ArrayList<ArrayList<Integer>>>();
// holding:
// first element of spelerSpel:
private int spelerNummer;
// second element of spelerSpel:
private int spelerBeurtNummer;
// third element of spelerSpel:
private ArrayList<ArrayList<Integer>>spelerBeurtenWorpenScore = new ArrayList<ArrayList<Integer>>();
// holding:
private ArrayList<Integer>spelerBeurtWorpenScore = new ArrayList<Integer>();
// holding:
private int spelerBeurtWorpScore;
// fourth element of spelerSpel:
private ArrayList<Integer>spelerBeurtenTotaal = new ArrayList<Integer>();
// fifth element of spelerSpel:
private ArrayList<Integer>spelerBanen = new ArrayList<Integer>();
// holding:
private int spelerBaan;
并像这样将值放入其中:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
spelerBaan = 2;
spelerBanen.add(spelerBaan);
spelerSpel.add(spelerBanen);
但是,我仍然遇到问题,在最后一行,将数组 spelerBanen 添加到 spelerSpel,因为 spelerSpel 现在希望每个(第一级)元素都是二维数组,而 spelerBanen 不是。如何解决?我可以考虑使用一个虚拟占位符,比如
ArrayList<ArrayList<Integer>>dummy = new ArrayList<ArrayList<Integer>>();
dummy.add(spelerBanen);
spelerSpel.add(dummy);
但这对我来说似乎也不是一个很好的解决方案?
[编辑] 我的想法是将 spelerSpel 的声明更改为:
private ArrayList<ArrayList<ArrayList<Integer>>> spelerSpel = new ArrayList<ArrayList<ArrayList<Integer>>>(5);
所以“固定”长度为5。然后:
spelerBaan = 2;
spelerBanen.set(0, spelerBaan);
spelerSpel.get(0).set(0,spelerBanen);
spelersSpel.add(spelerSpel);
我仍然会被一个包含很多“虚拟”值的数组困住,但我不知道如何做得更好。