Baraja baraja de cartas en Java
-
Mezclar la
ArrayList
utilizando el bucle tradicional en Java -
Mezcla aleatoriamente la función
ArrayList
usando la función de coleccionesshuffle
en Java
La palabra barajar literalmente significa organizar los elementos, objetos o cartas en un orden aleatorio o indefinido. La lista de objetos que no sigue un patrón definido se considera barajada.
De manera similar, en Java, varios métodos permiten al usuario mezclar elementos. A continuación se muestra el bloque de código para demostrar este proceso.
Mezclar la ArrayList
utilizando el bucle tradicional 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);
}
}
En el código anterior, se crea una instancia de una ArrayList
. La instancia creada ayuda a agregar elementos a la ArrayList
. La lista se completa en orden secuencial de valores 0
a 51
. El tamaño del mazo es una variable estática declarada a nivel de clase.
El bucle for
comprueba la condición, en la que el valor inicial se comprueba con la variable de tamaño de plataforma estática. Ahora, para mezclar la lista inicial, se crea otra ArrayList
vacía. Aplicaremos un bucle while
con una condición en la que el tamaño de la plataforma debe ser mayor que el valor cero.
La idea de mantener esta condición es porque el elemento de un mazo se elimina y se coloca en otra lista barajada. Por lo tanto, el tamaño original sigue disminuyendo y finalmente se vuelve cero.
Dentro del bucle, usamos la función random
para encontrar el índice primero. El método estático está presente en la clase Math
y es llamado directamente por el nombre de la clase. La función de utilidad genera un número aleatorio que varía entre 0.0
y 1.0
. El método siempre devuelve un valor double
.
Para calcular el valor del índice
, el número aleatorio formado se multiplica por el tamaño actual de la lista de matrices. Por lo tanto, generar un índice aleatorio cada vez.
Ahora, el índice formado se utiliza para eliminar el elemento en el índice en el mazo original. El método remove
es de la clase ArrayList
y elimina el valor particular en el índice. Toma el índice o la posición en la lista para ser eliminado.
La función también devuelve el elemento en el índice de la lista. El objeto que se eliminará se agregará a la nueva lista aleatoria. El bucle continúa, donde un elemento ahora reduce el tamaño del mazo original. Por lo tanto, cuando se repita la próxima vez, se generará un nuevo índice. Y cada vez, se elimina un valor y se agrega a la lista aleatoria.
A continuación se muestra la salida del bloque de código dado.
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]
Mezcla aleatoriamente la función ArrayList
usando la función de colecciones shuffle
en Java
A continuación se muestra el bloque de código que demuestra el barajado utilizando el 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);
}
}
En el bloque de código, el procedimiento de instanciación de ArrayList
es el mismo. La adición de elementos en la lista se realiza de manera similar a la del primer código. Imprimimos la lista ordenada en la consola usando el método println
.
Ahora, se llama a la función shuffle
de Collections
. Este método realiza permutación y calcula aleatoriamente los valores en la lista dada. Esta función vuelca el elemento seleccionado aleatoriamente de nuevo a la lista. Lanza la UnsupportedOperationException
cuando la lista proporcionada no admite la operación de configuración. La lista formada aleatoriamente se imprime en la consola junto con las listas 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 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.
LinkedInArtículo relacionado - Java ArrayList
- Cómo ordenar objetos en ArrayList por fecha en Java
- Diferencias entre List y Arraylist en Java
- Encuentra valores únicos en Java ArrayList
- Vector y ArrayList en Java
- Comparar ArrayLists en Java
- Convertir ArrayList a Int Array en Java
Artículo relacionado - Java Loop
- Usar índice con foreach en Java
- Java Do-While Bucle con entrada de usuario
- Salir de un bucle for en Java
- Romper bucles anidados en Java
- Salir de un bucle while en Java