[英]How to add elements from a list to a two-dimensional array?
我有一个需要添加到二维数组的整数列表。
ArrayList<Integer> myList = new ArrayList<Integer>(size);
//Generation
if(size % 2 != 0) {
System.out.println("need nombre pair");
} else {
int x = 0;
while (x != 2) {
for (int i = 0; i >= size/2; i++) {
int n = (int)Math.random() * 10;
if(!myList.contains(n))
myList.add(n);
}
x++;
}
}
Collections.shuffle(myList);
整理列表后,我想将所有int都添加到二维数组( int[][]
)中。 我该怎么做呢?
您可以将列表拆分为多个子列表,然后将其转换为数组,表的每一列对应一个:
Integer[][] table = new Integer[width][];
for (int x = 0; x < width; x++) {
table[x] = myList.subList(width * x, width * x + height).toArray(new Integer[height]);
}
这是一种可以生成满足您要求的2D数组的方法:
private static int[][] makeArray(int columns, int rows) {
int totalItems = rows * columns;
if (totalItems % 2 != 0) {
throw new IllegalArgumentException("Must be an even number of cells.");
}
List<Integer> numbers = new ArrayList<>();
for (int i = 0; i < totalItems / 2; i++) {
numbers.add(i);
numbers.add(i);
}
Collections.shuffle(numbers);
Iterator<Integer> iterator = numbers.iterator();
int[][] result = new int[columns][rows];
for (int x = 0; x < columns; x++) {
for (int y = 0; y < rows; y++) {
result[x][y] = iterator.next();
}
}
return result;
}
这是一个测试它的主要方法:
public static void main(String[] args) throws Exception {
int[][] array = makeArray(3, 4);
for (int i = 0; i < 3; i++) {
System.out.println(Arrays.toString(array[i]));
}
}
输出示例:
[0, 5, 1, 0]
[3, 1, 5, 2]
[4, 3, 2, 4]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.