Baralho de cartas embaralhado em Java

Rashmi Patidar 20 novembro 2021 18 outubro 2021 Java Java ArrayList Java Loop Java Array
  1. Embaralhe o ArrayList usando o loop tradicional em Java
  2. Embaralhe a ArrayList usando a função shuffle das coleções em Java
Baralho de cartas embaralhado em Java

A palavra embaralhar significa literalmente organizar os elementos, objetos ou cartas em ordem aleatória ou indefinida. A lista de objetos que não segue um padrão definido é considerada embaralhada.

Da mesma forma, em Java, vários métodos permitem que um usuário embaralhe elementos. Abaixo está o bloco de código para demonstrar esse processo.

Embaralhe o ArrayList usando o loop tradicional em 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);
    }
}

No código acima, uma ArrayList é instanciada. A instância criada ajuda a adicionar elementos ao ArrayList. A lista é preenchida em ordem sequencial de valores 0 a 51. O tamanho do deck é uma variável estática declarada no nível da classe.

O loop for verifica a condição, em que o valor inicial é verificado com a variável de tamanho do deck estático. Agora, para embaralhar a lista inicial, outra ArrayList vazia é criada. Aplicaremos um loop while com uma condição em que o tamanho do deck deve ser maior que o valor zero.

A ideia de manter essa condição é porque o elemento de um baralho é removido e colocado em outra lista embaralhada. Conseqüentemente, o tamanho original continua diminuindo e, finalmente, torna-se zero.

Dentro do loop, usamos a função random para encontrar o índice primeiro. O método estático está presente na classe Math e é chamado diretamente pelo nome da classe. A função de utilidade gera um número aleatório que varia entre 0.0 e 1.0. O método sempre retorna um valor duplo.

Para calcular o valor index, o número aleatório formado é multiplicado pelo tamanho atual da lista do array. Conseqüentemente, gerando um índice aleatório a cada vez.

Agora, o índice formado é usado para remover o elemento do índice no baralho original. O método remove é da classe ArrayList e remove o valor particular no índice. Leva o índice ou a posição na lista para ser removido.

A função também retorna o elemento no índice da lista. O objeto a ser removido é adicionado à nova lista embaralhada. O loop continua, onde um elemento agora reduz o tamanho do deck original. Portanto, quando itera da próxima vez, um novo índice será gerado. E a cada vez, um valor é removido e anexado na lista embaralhada.

Abaixo está a saída do bloco de código fornecido.

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]

Embaralhe a ArrayList usando a função shuffle das coleções em Java

Abaixo está o bloco de código que demonstra o embaralhamento usando o método 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);
    }
}

No bloco de código, o procedimento de instanciação ArrayList é o mesmo. A adição de elementos na lista é feita de forma semelhante à do primeiro código. Imprimimos a lista ordenada no console usando o método println.

Agora, a função shuffle de Collections é chamada. Este método realiza a permutação e calcula aleatoriamente os valores na lista fornecida. Esta função coloca o elemento selecionado aleatoriamente de volta na lista. Ele lança o UnsupportedOperationException quando a lista fornecida não suporta a operação de definição. A lista formada aleatoriamente é impressa no console junto com as listas originais.

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

Artigo relacionado - Java ArrayList

  • Como ordenar os objetos na ArrayList por data em Java
  • A diferença entre ArrayList e LinkedList em Java
  • Converter lista em ArrayList em Java
  • Converter String em ArrayList em Java
  • Obtenha ArrayList do array int em Java
  • Artigo relacionado - Java Loop

  • Sair de um for Loop em Java
  • Quebrar Loops Aninhados em Java
  • Saia de um loop while em Java
  • Java for Loop Com Duas Variáveis
  • Artigo relacionado - Java Array

  • Como concatenar duas arraias em Java
  • Como converter Byte Array em Hex String em Java
  • Remover duplicatas do array em Java
  • Adicionar objetos a uma matriz em Java
  • A função push() em Java
  • Clonar arrays Java