Baralho de cartas embaralhado em Java
-
Embaralhe o
ArrayList
usando o loop tradicional em Java -
Embaralhe a
ArrayList
usando a funçãoshuffle
das coleções 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 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.
LinkedInArtigo 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