Skip to content

Instantly share code, notes, and snippets.

@thanoojgithub
Created March 29, 2017 17:46
Show Gist options
  • Select an option

  • Save thanoojgithub/1fcd54161242539f0bf551ae9816970e to your computer and use it in GitHub Desktop.

Select an option

Save thanoojgithub/1fcd54161242539f0bf551ae9816970e to your computer and use it in GitHub Desktop.
Java Collection - Standard 52-card deck use case
package com;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Deck {
public static void main(String[] args) {
List<Card> deckOne = doSuffling(Deck.getIntance());
List<Card> deckTwo = doSuffling(Deck.getIntance());
List<Card> deckThree = doSuffling(Deck.getIntance());
List<Card> deckFour = doSuffling(Deck.getIntance());
System.out.println("----------------doSuffling--------------------------");
System.out.println("deckOne: " + deckOne);
System.out.println("deckTwo: " + deckTwo);
System.out.println("deckThree: " + deckThree);
System.out.println("deckFour: " + deckFour);
System.out.println("----------------getOnlySpades--------------------------");
for (Card card : getOnlySpades(deckOne)) {
System.out.println("getOnlySpades(deckOne) - " + card);
}
for (Card card : getOnlySpades(deckTwo)) {
System.out.println("getOnlySpades(deckOne) - " + card);
}
for (Card card : getOnlySpades(deckThree)) {
System.out.println("getOnlySpades(deckOne) - " + card);
}
for (Card card : getOnlySpades(deckFour)) {
System.out.println("getOnlySpades(deckOne) - " + card);
}
}
public static List<Card> doSuffling(List<Card> cards) {
for (Card card : cards) {
System.out.println("Deck.doSuffling() before : " + card);
}
Collections.shuffle(cards);
return cards;
}
public static List<Card> getOnlySpades(List<Card> cards) {
List<Card> cardsTemp = new ArrayList<Card>();
for (Card card : cards) {
if (card.getSuit().equalsIgnoreCase(Suits.SPADES.name())) {
cardsTemp.add(card);
}
}
return cardsTemp;
}
public static List<Card> getIntance() {
List<Card> cardList = new ArrayList<Card>();
cardList.add(new Card(Suits.randomSuit().name(), SuitIncludes.ACE.name(), SuitColor.randomSuitColor().name()));
cardList.add(new Card(Suits.randomSuit().name(), SuitIncludes.KING.name(), SuitColor.randomSuitColor().name()));
cardList.add(new Card(Suits.randomSuit().name(), SuitIncludes.QUEEN.name(), SuitColor.randomSuitColor().name()));
cardList.add(new Card(Suits.randomSuit().name(), SuitIncludes.JACK.name(), SuitColor.randomSuitColor().name()));
for (int i = 2; i <= 10; i++) {
cardList.add(new Card(Suits.randomSuit().name(), String.valueOf(i), SuitColor.randomSuitColor().name()));
}
return cardList;
}
}
enum Suits {
CLUBS, DIAMONDS, HEARTS, SPADES;
private static final List<Suits> VALUES = Collections.unmodifiableList(Arrays.asList(values()));
private static final int SIZE = VALUES.size();
private static final Random RANDOM = new Random();
public static Suits randomSuit() {
return VALUES.get(RANDOM.nextInt(SIZE));
}
}
enum SuitIncludes {
ACE, KING, QUEEN, JACK;
}
enum SuitColor {
RED, BLACK;
private static final List<SuitColor> VALUES = Collections.unmodifiableList(Arrays.asList(values()));
private static final int SIZE = VALUES.size();
private static final Random RANDOM = new Random();
public static SuitColor randomSuitColor() {
return VALUES.get(RANDOM.nextInt(SIZE));
}
}
class Card {
private String suit;
private String value;
private String color;
public Card(String suit, String value, String color) {
super();
this.suit = suit;
this.value = value;
this.color = color;
}
public String getSuit() {
return suit;
}
public void setSuit(String suit) {
this.suit = suit;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public String toString() {
return suit + " " + value + " " + color;
}
}
//OUTPUT:
/*
Deck.doSuffling() before : DIAMONDS ACE RED
Deck.doSuffling() before : DIAMONDS KING RED
Deck.doSuffling() before : DIAMONDS QUEEN BLACK
Deck.doSuffling() before : DIAMONDS JACK RED
Deck.doSuffling() before : SPADES 2 BLACK
Deck.doSuffling() before : CLUBS 3 RED
Deck.doSuffling() before : DIAMONDS 4 BLACK
Deck.doSuffling() before : CLUBS 5 BLACK
Deck.doSuffling() before : HEARTS 6 RED
Deck.doSuffling() before : HEARTS 7 RED
Deck.doSuffling() before : HEARTS 8 BLACK
Deck.doSuffling() before : CLUBS 9 BLACK
Deck.doSuffling() before : DIAMONDS 10 RED
Deck.doSuffling() before : SPADES ACE BLACK
Deck.doSuffling() before : DIAMONDS KING RED
Deck.doSuffling() before : DIAMONDS QUEEN RED
Deck.doSuffling() before : DIAMONDS JACK BLACK
Deck.doSuffling() before : CLUBS 2 RED
Deck.doSuffling() before : CLUBS 3 RED
Deck.doSuffling() before : CLUBS 4 BLACK
Deck.doSuffling() before : HEARTS 5 BLACK
Deck.doSuffling() before : HEARTS 6 RED
Deck.doSuffling() before : CLUBS 7 RED
Deck.doSuffling() before : CLUBS 8 RED
Deck.doSuffling() before : CLUBS 9 RED
Deck.doSuffling() before : DIAMONDS 10 RED
Deck.doSuffling() before : DIAMONDS ACE RED
Deck.doSuffling() before : HEARTS KING RED
Deck.doSuffling() before : HEARTS QUEEN BLACK
Deck.doSuffling() before : CLUBS JACK BLACK
Deck.doSuffling() before : HEARTS 2 BLACK
Deck.doSuffling() before : SPADES 3 BLACK
Deck.doSuffling() before : CLUBS 4 BLACK
Deck.doSuffling() before : DIAMONDS 5 RED
Deck.doSuffling() before : HEARTS 6 BLACK
Deck.doSuffling() before : DIAMONDS 7 RED
Deck.doSuffling() before : HEARTS 8 BLACK
Deck.doSuffling() before : HEARTS 9 RED
Deck.doSuffling() before : SPADES 10 RED
Deck.doSuffling() before : SPADES ACE BLACK
Deck.doSuffling() before : SPADES KING BLACK
Deck.doSuffling() before : HEARTS QUEEN BLACK
Deck.doSuffling() before : SPADES JACK BLACK
Deck.doSuffling() before : DIAMONDS 2 RED
Deck.doSuffling() before : HEARTS 3 BLACK
Deck.doSuffling() before : CLUBS 4 BLACK
Deck.doSuffling() before : DIAMONDS 5 RED
Deck.doSuffling() before : DIAMONDS 6 BLACK
Deck.doSuffling() before : DIAMONDS 7 BLACK
Deck.doSuffling() before : HEARTS 8 RED
Deck.doSuffling() before : DIAMONDS 9 BLACK
Deck.doSuffling() before : DIAMONDS 10 BLACK
----------------doSuffling--------------------------
deckOne: [DIAMONDS ACE RED, HEARTS 8 BLACK, DIAMONDS KING RED, HEARTS 6 RED, CLUBS 5 BLACK, CLUBS 9 BLACK, DIAMONDS 10 RED, HEARTS 7 RED, DIAMONDS QUEEN BLACK, DIAMONDS 4 BLACK, CLUBS 3 RED, DIAMONDS JACK RED, SPADES 2 BLACK]
deckTwo: [HEARTS 5 BLACK, CLUBS 2 RED, CLUBS 4 BLACK, CLUBS 3 RED, CLUBS 7 RED, SPADES ACE BLACK, HEARTS 6 RED, DIAMONDS JACK BLACK, CLUBS 9 RED, DIAMONDS QUEEN RED, DIAMONDS 10 RED, CLUBS 8 RED, DIAMONDS KING RED]
deckThree: [DIAMONDS 7 RED, CLUBS JACK BLACK, HEARTS 6 BLACK, SPADES 10 RED, DIAMONDS 5 RED, HEARTS 8 BLACK, DIAMONDS ACE RED, HEARTS QUEEN BLACK, HEARTS 9 RED, SPADES 3 BLACK, HEARTS 2 BLACK, HEARTS KING RED, CLUBS 4 BLACK]
deckFour: [SPADES ACE BLACK, DIAMONDS 9 BLACK, CLUBS 4 BLACK, HEARTS 3 BLACK, SPADES KING BLACK, DIAMONDS 2 RED, DIAMONDS 7 BLACK, HEARTS 8 RED, HEARTS QUEEN BLACK, DIAMONDS 10 BLACK, DIAMONDS 6 BLACK, SPADES JACK BLACK, DIAMONDS 5 RED]
----------------getOnlySpades--------------------------
getOnlySpades(deckOne) - SPADES 2 BLACK
getOnlySpades(deckOne) - SPADES ACE BLACK
getOnlySpades(deckOne) - SPADES 10 RED
getOnlySpades(deckOne) - SPADES 3 BLACK
getOnlySpades(deckOne) - SPADES ACE BLACK
getOnlySpades(deckOne) - SPADES KING BLACK
getOnlySpades(deckOne) - SPADES JACK BLACK
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment