Java-将元素从ArrayList移动​​到数组

时间:2017-10-07 12:39:53

标签: java arrays arraylist

我目前有一个随机混合的ArrayList

public static void main(String[] args) {
    ArrayList<Integer> solution = new ArrayList<>();
    for (int i = 1; i <= 48; i++) {
        solution.add(i);
    }
    Collections.shuffle(solution);

这给了我ArrayList随机混合的数字1-48。现在我有4个数组,我想随机添加ArrayList的元素而不重复。

 int[] heartsRow = new int[14];
 int[] diamondsRow = new int[14];
 int[] spadesRow = new int[14];
 int[] clubsRow = new int[14]; 

新数组包含14个元素的原因是因为前两个元素将始终相同。

    heartsRow[0] = 1;
    heartsRow[1] = 0;
    diamondsRow[0] = 14;
    diamondsRow[1] = 0;
    spadesRow[0] = 27;
    spadesRow[1] =0;
    clubsRow[0] = 40;
    clubsRow[1] = 0;

我想用ArrayList的非重复元素完全填充每个数组。

2 个答案:

答案 0 :(得分:1)

您可以在列表上使用计数循环, 每步增加4个计数器, 并使用调整后的偏移量为数组分配元素:

for (int i = 0; i + 3 < solution.size(); i += 4) {
  int j = i / 4;
  heartsRow[2 + j] = solution.get(i);
  diamondsRow[2 + j] = solution.get(i + 1);
  spadesRow[2 + j] = solution.get(i + 2);
  clubsRow[2 + j] = solution.get(i + 3);
}

答案 1 :(得分:0)

您可以为循环设置4 ,从0到11,12到23,24到35和36到47,并添加到您的列表中。

for (int i = 0; i < 12; i++)
    heartsRow[i + 2] = solution.get(i);

for (int i = 0; i < 12; i++)
    diamondsRow[i + 2] = solution.get(i + 12);

for (int i = 0; i < 12; i++)
    spadesRow[i + 2] = solution.get(i + 24);

for (int i = 0; i < 12; i++)
    clubsRow[i + 2] = solution.get(i + 36);