[英]Converting ArrayList to 2D array
確定了從1到16的隨機數列表的pof創建方式后,如何以矩陣形式顯示此列表。
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
我在結尾處加一個零,因為我希望它提供一個可以由用戶使用布爾運算符移動的空白。
您的兩個for循環將列表分成2D數組就好了。
要打印 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]
像這樣:
int index = 1;
for(Integer i : list) {
System.out.print(i);
if (index % 4 == 0)
System.out.println();
index++;
}
如果需要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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.