整个事情是我有一个2D数组:
int[][] Key = {{1,0,1,0,1,0},{1,0,1,0,1,0},{1,0,1,0,1,0},{1,0,1,0,1,0},
{1,0,1,0,1,0},{1,0,1,0,1,0},{1,0,1,0,1,0},{1,0,1,0,1,0}};
在8 * 1D阵列中拆分这个2D阵列需要什么(每个块1个)。所以我定义了8个新的1D数组以及一个数组列表,将所有这些数组放入其中:
ArrayList<int[]> B_Blocks = new ArrayList<int[]>();
int[] B0 = new int[Key[0].length];
int[] B1 = new int[Key[0].length];
int[] B2 = new int[Key[0].length];
int[] B3 = new int[Key[0].length];
int[] B4 = new int[Key[0].length];
int[] B5 = new int[Key[0].length];
int[] B6 = new int[Key[0].length];
int[] B7 = new int[Key[0].length];
我需要的是一种在数组列表中索引数组的方法,例如我想将Key
的第一行值添加到Arraylist
P.S arraylist的重点是稍后通过forloops获得更多操作的访问权限。任何帮助谢谢
我尝试使用以下嵌套for循环来添加值:
for (int i =0;i<Key.length;i++) {
for (int j =0;j<Key[0].length;j++) {
B_Blocks.get(i)[j] = Key[i][j] ;
}
}
它运行但输出时值不相同:
for (int i =0;i<rightblock.length;i++) {
for (int j =0;j<rightblockExp[0].length;j++) {
System.out.print(B_Blocks.get(i)[j]);
} System.out.print("\n");
}
答案 0 :(得分:1)
如果要在指定的索引处添加元素,可以使用列表中的重载add(index, elem)
方法。
list.add(0, key[0][0]);
list.add(1, key[0][1]);
答案 1 :(得分:0)
您可以使用list.get(i)访问ArrayList的元素。例如:
int[] array1 = B_Blocks.get(0);
希望有所帮助!
答案 2 :(得分:0)
也许我们应该回到最初的要求:
在8 * 1D阵列中拆分这个2D阵列需要什么(每个块1个)
和
我需要的是一种在数组列表中索引数组的方法
您可以使用这样的2D数组:
Key[0]
将为您提供第一个子阵列(='row'),Key[1]
第二个,依此类推。 Key[0][0]
将为您提供第一个子阵列中的第一个元素,Key[0][1]
第二个元素,依此类推。访问一个元素,比如Key[0][5]
,也可以表示为
int[] firstRow = Key[0];
doSomethingWith(firstRow[5]);
第一行允许引用firstRow
指向Key[0]
,i。即第一个子阵列。 firstRow
和Key[0]
指向同一个数组 - 您似乎认为数组在您声明时会被复制:
No..no为什么我会把它们放在一个列表中,如果我要让它们回到另一个阵列中的位置。
ArrayList问题:
P.S arraylist的重点是稍后通过forloops获得更多操作的访问权限。任何帮助谢谢
如果使用ArrayLists重新构建该结构,任何事情都不会变得容易 - 除非你想分别向数组添加元素ArrayLists。