如何创建如下所示的数组:
[[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);
我仍然会遇到一个持有大量“虚拟”值的数组,但我无法弄清楚如何做得更好。
答案 0 :(得分:1)
尝试下面的代码示例4D数组和显示所有值的主要方法。
public class SampleClass {
static final int arrays[][][][] = {
{ { { 0, 2528 }, { 12, 25 }, { 25, 258 } },
{ { 25, 345 }, { 345, 345 } } },
{ { { 4654, 234234 }, { 23434, 852 } },
{ { 7897, 56345 }, { 3422, 57 }, { 98889, 234234 } } },
{ { { 545, 45645 }, { 45645, 3232 }, { 5252, 65465 } },
{ { 45645, 234234 }, { 6451, 68678 } } },
{
{ { 789798, 34234 }, { 234234, 23423 } },
{ { 23423, 234234 }, { 345345, 456456 }, { 5757, 800000 } },
} };
public static void main(String[] args) {
for (int i = 0; i < arrays.length; i++) {
for (int j = 0; j < arrays[i].length; j++) {
for (int k = 0; k < arrays[i][j].length; k++) {
for (int l = 0; l < arrays[i][j][k].length; l++) {
System.out.println(arrays[i][j][k][l]);
}
}
}
}
}
}