【问题标题】:How to add elements from a list to a two-dimensional array?如何将列表中的元素添加到二维数组?
【发布时间】:2014-04-07 14:11:54
【问题描述】:

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

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

【问题讨论】:

  • 什么样的表,JTable
  • 你的意思是一个数组吗?通过 (int[])
  • 我有这个:int[][] tab = new int[][];我想在该表中添加列表。
  • 我明白了。你所说的表是一个二维数组。但是让我们继续使用表命名法——我们如何知道将整数放入哪一行?
  • 一开始我问用户想要多少行和列(2x2 - 8x8)所以基本上如果他输入 4x4,我想要一个看起来像这样的数组:1 2 3 4 2 5 1 3 5 4 6 6 7 8 7 8 该列表已包含每个数字中的 2 个。

标签: java list int


【解决方案1】:

这里有一个方法可以生成满足您要求的二维数组:

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]

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      相关资源
      最近更新 更多