[英]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.