Java 将ArrayList转换为二维数组
在找到创建从1到16的随机数列表的方法后,我如何以矩阵形式显示该列表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,
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在“数组”的末尾添加了列表,但运行了数字,但重复了。