package solitaire; import java.util.ArrayList; import java.util.Collections; import java.util.List; final class Deck { private static final Suit[] suits = Suit.values(); private static final Rank[] ranks = Rank.values(); private final List cards; Deck() { this.cards = new ArrayList<>(suits.length * ranks.length); for (Suit s : suits) for (Rank r : ranks) cards.add(new Card(s, r)); } void shuffle() { Collections.shuffle(cards); } Card draw() { return cards.removeLast(); } boolean isEmpty() { return cards.isEmpty(); } @Override public String toString() { if (isEmpty()) return "{ }"; return "{ * }"; } }