如何将列表中的元素添加到二维数组?

时间:2014-04-07 14:11:54

标签: java list int

我有一个我需要添加到二维数组的整数列表。

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[][])。我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以将列表拆分为多个子列表并将其转换为数组,每个列对应一个列:

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

答案 1 :(得分:0)

这是一种生成符合您要求的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]