2017-10-07 2 views
1

J'ai actuellement un mélange aléatoire ArrayList.Java- Déplacement d'éléments d'une ArrayList vers une Array

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

Cela me donne un ArrayList avec les numéros 1-48 mélangés au hasard. Maintenant, j'ai 4 tableaux et je veux ajouter au hasard les éléments de la ArrayList sans répétition. La raison pour laquelle les nouveaux tableaux contiennent 14 éléments est que les deux premiers éléments seront toujours les mêmes.

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

Je veux remplir complètement chaque matrice avec des éléments non répétitifs de ArrayList.

Répondre

0

Vous pouvez faire 4 pour boucles, de 0 à 11, de 12 à 23, de 24 à 35 et de 36 à 47, et les ajouter dans vos listes.

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); 
1

Vous pouvez utiliser une boucle de comptage sur la liste, incrémenter le compteur par quatre dans chaque étape, et attribuer des éléments à des matrices avec des décalages corrigés:

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