Kartenstapel in Java mischen
-
Mischen der
ArrayList
mit der traditionellen Schleife in Java -
Mischen der
ArrayList
mit der Collections-Funktionshuffle
in Java
Das Wort Mischen bedeutet wörtlich, die Elemente, Objekte oder Karten in zufälliger oder undefinierter Reihenfolge anzuordnen. Die Objektliste, die keinem definierten Muster folgt, wird als gemischt betrachtet.
In ähnlicher Weise ermöglichen es in Java verschiedene Methoden einem Benutzer, Elemente zu mischen. Unten ist der Codeblock, um diesen Vorgang zu demonstrieren.
Mischen der ArrayList
mit der traditionellen Schleife in 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);
}
}
Im obigen Code wird eine ArrayList
instanziiert. Die erstellte Instanz hilft beim Hinzufügen von Elementen zur ArrayList
. Die Liste wird in sequentieller Reihenfolge von 0
bis 51
Werten gefüllt. Die Deckgröße ist eine statische Variable, die auf Klassenebene deklariert wird.
Die for
-Schleife prüft die Bedingung, wobei der Anfangswert mit der statischen Deckgrößenvariable geprüft wird. Um nun die Ausgangsliste zu mischen, wird eine weitere leere ArrayList
erstellt. Wir werden eine while
-Schleife mit einer Bedingung anwenden, bei der die Deckgröße größer als der Wert Null sein muss.
Die Idee, diese Bedingung beizubehalten, besteht darin, dass das Element aus einem Deck entfernt und in eine andere gemischte Liste eingefügt wird. Daher nimmt die ursprüngliche Größe weiter ab und wird schließlich null.
Innerhalb der Schleife verwenden wir die Funktion random
, um zuerst den Index zu finden. Die statische Methode ist in der Klasse Math
vorhanden und wird direkt über den Klassennamen aufgerufen. Die Utility-Funktion generiert eine Zufallszahl zwischen 0.0
und 1.0
. Die Methode gibt immer einen doppelten
Wert zurück.
Zur Berechnung des index
-Wertes wird die gebildete Zufallszahl mit der aktuellen Grösse der Array-Liste multipliziert. Daher wird jedes Mal ein zufälliger Index generiert.
Nun wird der gebildete Index verwendet, um das Element am Index im ursprünglichen Deck zu entfernen. Die Methode remove
stammt aus der Klasse ArrayList
und entfernt den jeweiligen Wert am Index. Es nimmt den Index oder die Position in der Liste an, die entfernt werden soll.
Die Funktion gibt auch das Element am Index in der Liste zurück. Das zu entfernende Objekt wird der neuen gemischten Liste hinzugefügt. Die Schleife wird fortgesetzt, wobei nun ein Element die Größe des ursprünglichen Decks verringert. Daher wird bei der nächsten Iteration ein neuer Index generiert. Und jedes Mal wird ein Wert entfernt und in der gemischten Liste angehängt.
Unten ist die Ausgabe des angegebenen Codeblocks.
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]
Mischen der ArrayList
mit der Collections-Funktion shuffle
in Java
Unten ist der Codeblock, der das Mischen mit der Methode shuffle
demonstriert.
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);
}
}
Im Codeblock ist die Prozedur der ArrayList
-Instanziierung gleich. Das Hinzufügen von Elementen in der Liste erfolgt ähnlich wie im ersten Code. Wir drucken die geordnete Liste mit der Methode println
an die Konsole.
Nun wird die Funktion shuffle
von Collections
aufgerufen. Diese Methode führt eine Permutation durch und berechnet zufällig die Werte in der gegebenen Liste. Diese Funktion verschiebt das zufällig ausgewählte Element wieder in die Liste. Es löst die UnsupportedOperationException
aus, wenn die bereitgestellte Liste die Set-Operation nicht unterstützt. Die zufällig gebildete Liste wird in der Konsole zusammen mit den Originallisten gedruckt.
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.
LinkedInVerwandter Artikel - Java ArrayList
- Wie sortiere ich Objekte in ArrayList in Java nach Datum
- Suchen Sie eindeutige Werte in Java ArrayList
- Unterschiede zwischen List und Arraylist in Java
- Vektor und ArrayList in Java
- Vergleichen ArrayLists in Java
- Konvertieren ArrayList in Set in Java
Verwandter Artikel - Java Loop
- Verwenden Sie Index With forEach in Java
- Java do-while-Schleife mit Benutzereingabe
- Ausbrechen einer for-Schleife in Java
- Beenden einer While-Schleife in Java
- Unterbrechen Sie verschachtelte Schleifen in Java