【问题标题】:Converting ArrayList to 2D array将 ArrayList 转换为二维数组
【发布时间】:2012-02-27 12:53:04
【问题描述】:

在弄清楚创建从 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]]
}

像这样:
3, 4, 5, 8,
2, 6, 7, 9,
11, 1, 15, 13,
10、12、14、0

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

【问题讨论】:

  • 这是作业吗?如果是,请将其标记为这样。你遇到了什么问题?
  • 我正在尝试创建一个随机数矩阵,有人告诉我使用 ArryList 但这只会打印一行。我想使用随机但随机重复,我不想那样。所以我使用了 ArrayList,现在我想把它分解成一个矩阵。
  • @GuillaumePolet 我回复了你。 ^^

标签: java arrays matrix arraylist


【解决方案1】:

类似这样的:

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

【讨论】:

    【解决方案2】:

    你的两个 for 循环将列表分解成一个二维数组就好了。

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

    for (int[] row : a2) {
        System.out.print("[");
        for (int i : row)
            System.out.printf("%4d", i);
        System.out.println("]");
    }
    

    结果:

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

    【讨论】:

    • 它不会把它分解成一个矩阵。
    • 矩阵到底是什么意思? @aioobe 打印出来确实像一个。
    • 是的。这就是我想要的。但是对于 (int i : row) System.out.printf("%4d", i); 有什么作用?什么意思?
    • for (int i : row) 是 for-each loop 和 printf 是 printing a formatted a string 的一种方式。
    【解决方案3】:

    如果你需要 ArrayList 和 Random,那么你可以使用以下:

    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);
    }
    

    然后您可以简单地遍历矩阵并打印每个数组。

    for(ArrayList<Integer> array: matrix) {
        System.out.println(array);
    }
    

    【讨论】:

    • 'ArrayList array = new Array();'对我不起作用。它告诉我导入 java.sql.Array
    • 我将 List 添加到“Array”的末尾,它运行但数字重复。
    猜你喜欢
    • 1970-01-01
    • 2020-09-10
    • 2023-04-03
    • 2012-06-23
    • 2013-02-21
    • 2020-10-04
    • 2011-07-01
    • 2012-02-27
    • 2020-11-15
    相关资源
    最近更新 更多