Mélangez le jeu de cartes en Java

Rashmi Patidar 12 octobre 2023
  1. Mélangez la ArrayList en utilisant la boucle traditionnelle en Java
  2. Mélangez la ArrayList à l’aide de la fonction shuffle des collections en Java
Mélangez le jeu de cartes en Java

Le mot shuffle signifie littéralement organiser les éléments, les objets ou les cartes dans un ordre aléatoire ou indéfini. La liste d’objets qui ne suit pas un modèle défini est considérée comme mélangée.

De même, en Java, diverses méthodes permettent à un utilisateur de mélanger des éléments. Vous trouverez ci-dessous le bloc de code pour illustrer ce processus.

Mélangez la ArrayList en utilisant la boucle traditionnelle en Java

import java.util.ArrayList;

public class Main {
  private static final int SIZE_OF_DECK = 52;

  public static void main(String[] args) {
    ArrayList<Integer> cardsDeck = new ArrayList<>();
    for (int i = 0; i < SIZE_OF_DECK; ++i) {
      cardsDeck.add(i);
    }
    System.out.println("Deck Of Cards:" + cardsDeck);
    ArrayList<Integer> shuffledDeck = new ArrayList<>();
    while (cardsDeck.size() > 0) {
      int index = (int) (Math.random() * cardsDeck.size());
      int removedCard = cardsDeck.remove(index);
      shuffledDeck.add(removedCard);
    }
    System.out.println("Shuffled Cards" + shuffledDeck);
  }
}

Dans le code ci-dessus, une ArrayList est instanciée. L’instance créée aide à ajouter des éléments dans la ArrayList. La liste est remplie par ordre séquentiel des valeurs 0 à 51. La taille du deck est une variable statique déclarée au niveau de la classe.

La boucle for vérifie la condition, dans laquelle la valeur initiale est vérifiée avec la variable de taille de pont statique. Maintenant, pour mélanger la liste initiale, une autre ArrayList vide est créée. Nous allons appliquer une boucle while avec une condition où la taille du deck doit être supérieure à la valeur zéro.

L’idée de conserver cette condition est que l’élément d’un jeu est supprimé et placé dans une autre liste mélangée. Par conséquent, la taille d’origine continue de diminuer et devient finalement nulle.

Dans la boucle, nous utilisons la fonction random pour trouver l’index en premier. La méthode statique est présente dans la classe Math et est directement appelée par le nom de la classe. La fonction utilitaire génère un nombre aléatoire compris entre 0.0 et 1.0. La méthode renvoie toujours une valeur double.

Pour calculer la valeur index, le nombre aléatoire formé est multiplié par la taille actuelle de la liste du tableau. Par conséquent, générer un index aléatoire à chaque fois.

Maintenant, l’index formé est utilisé pour supprimer l’élément à l’index dans le deck d’origine. La méthode remove provient de la classe ArrayList et supprime la valeur particulière à l’index. Il prend l’index ou la position dans la liste à supprimer.

La fonction renvoie également l’élément à l’index dans la liste. L’objet à supprimer est ajouté à la nouvelle liste mélangée. La boucle continue, où un élément réduit maintenant la taille du deck d’origine. Par conséquent, lors de la prochaine itération, un nouvel index sera généré. Et à chaque fois, une valeur est supprimée et ajoutée dans la liste brassée.

Ci-dessous se trouve la sortie du bloc de code donné.

Deck Of Cards:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51]
Shuffled Cards[51, 34, 28, 47, 14, 49, 42, 50, 26, 0, 44, 43, 2, 36, 30, 8, 46, 11, 21, 23, 7, 4, 33, 41, 32, 1, 20, 3, 10, 18, 6, 40, 29, 24, 31, 13, 45, 39, 22, 15, 27, 48, 9, 5, 25, 12, 38, 35, 37, 17, 16, 19]

Mélangez la ArrayList à l’aide de la fonction shuffle des collections en Java

Ci-dessous se trouve le bloc de code démontrant le brassage à l’aide de la méthode shuffle.

import java.util.ArrayList;
import java.util.Collections;

public class Main {
  public static void main(String[] args) {
    int deckSize = 52;
    ArrayList<Integer> list = new ArrayList<>();
    for (int i = 0; i < deckSize; ++i) {
      list.add(i);
    }
    System.out.println("Sequential List: " + list);
    Collections.shuffle(list);
    System.out.println("Shuffled List: " + list);
  }
}

Dans le bloc de code, la procédure d’instanciation ArrayList est la même. L’ajout d’éléments dans la liste se fait de manière similaire à celui du premier code. Nous imprimons la liste ordonnée sur la console en utilisant la méthode println.

Maintenant, la fonction shuffle de Collections est appelée. Cette méthode effectue une permutation et calcule aléatoirement les valeurs de la liste donnée. Cette fonction vide l’élément sélectionné au hasard dans la liste. Il lève la UnsupportedOperationException lorsque la liste fournie ne prend pas en charge l’opération set. La liste formée au hasard est imprimée dans la console avec les listes originales.

Sequential List[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51]
Shuffled List[46, 5, 4, 0, 19, 11, 13, 21, 1, 38, 36, 29, 31, 35, 48, 22, 49, 6, 14, 51, 3, 47, 16, 12, 42, 27, 50, 40, 26, 30, 33, 9, 43, 39, 2, 10, 28, 44, 8, 24, 41, 32, 25, 45, 34, 7, 23, 15, 18, 20, 37, 17]
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Article connexe - Java ArrayList

Article connexe - Java Loop

Article connexe - Java Array