Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将ArrayList转换为二维数组_Java_Arrays_Matrix_Arraylist - Fatal编程技术网

Java 将ArrayList转换为二维数组

Java 将ArrayList转换为二维数组,java,arrays,matrix,arraylist,Java,Arrays,Matrix,Arraylist,在找到创建从1到16的随机数列表的方法后,我如何以矩阵形式显示该列表 public static void main(String... args) throws Exception { List<Integer> list = new ArrayList<Integer>(); for (int i = 1; i < 17; i++) { list.add(i); } System.out.println(list); //[0, 1, 2, 3,

在找到创建从1到16的随机数列表的方法后,我如何以矩阵形式显示该列表

 public static void main(String... args) throws Exception {

 List<Integer> list = new ArrayList<Integer>();
 for (int i = 1; i < 17; i++) {
    list.add(i);
}
System.out.println(list); //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Collections.shuffle(list);
System.out.println(list); //[11, 5, 10, 9, 7, 0, 6, 1, 3, 14, 2, 4, 15, 13, 12, 8]

int[][] a2 = new int[4][4];
for (int i = 0; i < 4; i++) {
    for (int j = 0;  j< 4; j++) {


        a2[i][j] = list.get(i*4 + j);
      //  System.out.println(Arrays.deepToString(a2)); //[[11, 5, 10, 9], [7, 0, 6, 1],     [3, 14, 2, 4], [15, 13, 12, 8]]
    }
   System.out.println(Arrays.deepToString(a2)); //[[11, 5, 10, 9], [7, 0, 6, 1], [3,     14, 2, 4], [15, 13, 12, 8]]
}
//System.out.println(Arrays.deepToString(a2)); //[[11, 5, 10, 9], [7, 0, 6, 1], [3, 14                  2, 4], [15, 13, 12, 8]]
}
publicstaticvoidmain(String…args)引发异常{
列表=新的ArrayList();
对于(int i=1;i<17;i++){
列表.添加(i);
}
System.out.println(列表);//[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
集合。洗牌(列表);
System.out.println(列表);//[11,5,10,9,7,0,6,1,3,14,2,4,15,13,12,8]
int[]a2=新int[4][4];
对于(int i=0;i<4;i++){
对于(int j=0;j<4;j++){
a2[i][j]=list.get(i*4+j);
//System.out.println(Arrays.deepToString(a2));/[[11,5,10,9]、[7,0,6,1]、[3,14,2,4]、[15,13,12,8]]
}
System.out.println(Arrays.deepToString(a2));/[[11,5,10,9]、[7,0,6,1]、[3,14,2,4]、[15,13,12,8]]
}
//System.out.println(Arrays.deepToString(a2));/[[11,5,10,9]、[7,0,6,1]、[3,14,2,4]、[15,13,12,8]]
}
像这样:
3,4,5,8,
2,6,7,9,
11,1,15,13,
10,12,14,0


我在末尾加了一个零,因为我希望它表示一个可以由用户使用布尔运算符移动的空白。

您的两个for循环将列表很好地分解为一个2D数组

例如,要打印
a2
矩阵,您可以执行以下操作:

for (int[] row : a2) {
    System.out.print("[");
    for (int i : row)
        System.out.printf("%4d", i);
    System.out.println("]");
}
Random random = new Random();
ArrayList<ArrayList<Integer>> matrix = new ArrayList<ArrayList<Integer>>();
for(int i=0;i<4;i++) {
    ArrayList<Integer> array = new ArrayList<Integer>();
    for (int j=0;j<4;j++) {
        array.add(random.nextInt(16)+1);
    }
    matrix.add(array);
}
结果:

[   6  11   3   7]
[   4  14   5   9]
[   2  13  16  10]
[   8   1  12  15]

您的两个for循环将列表拆分为一个二维数组,效果很好

例如,要打印
a2
矩阵,您可以执行以下操作:

for (int[] row : a2) {
    System.out.print("[");
    for (int i : row)
        System.out.printf("%4d", i);
    System.out.println("]");
}
Random random = new Random();
ArrayList<ArrayList<Integer>> matrix = new ArrayList<ArrayList<Integer>>();
for(int i=0;i<4;i++) {
    ArrayList<Integer> array = new ArrayList<Integer>();
    for (int j=0;j<4;j++) {
        array.add(random.nextInt(16)+1);
    }
    matrix.add(array);
}
结果:

[   6  11   3   7]
[   4  14   5   9]
[   2  13  16  10]
[   8   1  12  15]
大概是这样的:

int index = 1;
for(Integer i : list) {
  System.out.print(i);
  if (index % 4 == 0)
    System.out.println();
  index++;
}
大概是这样的:

int index = 1;
for(Integer i : list) {
  System.out.print(i);
  if (index % 4 == 0)
    System.out.println();
  index++;
}

如果需要ArrayList和Random,则可以使用以下选项:

for (int[] row : a2) {
    System.out.print("[");
    for (int i : row)
        System.out.printf("%4d", i);
    System.out.println("]");
}
Random random = new Random();
ArrayList<ArrayList<Integer>> matrix = new ArrayList<ArrayList<Integer>>();
for(int i=0;i<4;i++) {
    ArrayList<Integer> array = new ArrayList<Integer>();
    for (int j=0;j<4;j++) {
        array.add(random.nextInt(16)+1);
    }
    matrix.add(array);
}
Random Random=new Random();
ArrayList矩阵=新的ArrayList();

对于(int i=0;i如果需要ArrayList和Random,则可以使用以下选项:

for (int[] row : a2) {
    System.out.print("[");
    for (int i : row)
        System.out.printf("%4d", i);
    System.out.println("]");
}
Random random = new Random();
ArrayList<ArrayList<Integer>> matrix = new ArrayList<ArrayList<Integer>>();
for(int i=0;i<4;i++) {
    ArrayList<Integer> array = new ArrayList<Integer>();
    for (int j=0;j<4;j++) {
        array.add(random.nextInt(16)+1);
    }
    matrix.add(array);
}
Random Random=new Random();
ArrayList矩阵=新的ArrayList();

对于(int i=0;这是作业吗?如果是,请这样标记。你有什么问题吗?我正在尝试创建一个随机数矩阵,我被告知使用ArryList,但它只打印一行。我想使用随机但随机的重复,我不想这样。所以我使用ArryList,现在我想将它分解成一个矩阵。@GuillaumePolet我回答了你。^^^这是作业吗?如果是,请这样标记。你有什么问题吗?我正在尝试创建一个随机数矩阵,我被告知使用ArryList,但它只打印一行。我想使用随机但随机重复,我不想这样。所以我使用ArryList,现在我想将它打破,使其看起来像一个matrix.@GuillaumePolet我回答了你。^^它没有把它分解成矩阵。你说的矩阵到底是什么意思?@aioobe打印输出看起来确实像一个。是的。这就是我想要的。但是(int I:row)System.out.printf(“%4d”,I);是什么意思?for(int I:row)是a,printf是一种方法。它不会把它分解成一个矩阵。你说的矩阵到底是什么意思?@aioobe print out看起来确实像一个。是的。这就是我想要的。但是(int I:row)System.out.printf(“%4d”),它的意思是什么?for(int I:row)是a,printf是一种方法。'ArrayList array=new array();'对我不起作用。它告诉我要导入java.sql.ArrayI在“数组”的末尾添加了列表,但运行了数字。ArrayList Array=new Array();'对我不起作用。它告诉我要导入java.sql.ArrayI在“数组”的末尾添加了列表,但运行了数字,但重复了。