MCPcopy Create free account
hub / github.com/careercup/ctci / Deck

Class Deck

java/Chapter 8/Question8_1/Deck.java:7–67  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5import CtCILibrary.AssortedMethods;
6
7public class Deck <T extends Card> {
8 private ArrayList<T> cards;
9 private int dealtIndex = 0; // marks first undealt card
10
11 public Deck() {
12 }
13
14 public void setDeckOfCards(ArrayList<T> deckOfCards) {
15 cards = deckOfCards;
16 }
17
18 public void shuffle() {
19 for (int i = 0; i < cards.size(); i++) {
20 int j = AssortedMethods.randomIntInRange(i, cards.size() - i - 1);
21 T card1 = cards.get(i);
22 T card2 = cards.get(j);
23 cards.set(i, card2);
24 cards.set(j, card1);
25 }
26 }
27
28 public int remainingCards() {
29 return cards.size() - dealtIndex;
30 }
31
32 public T[] dealHand(int number) {
33 if (remainingCards() < number) {
34 return null;
35 }
36
37 T[] hand = (T[]) new Card[number];
38 int count = 0;
39 while (count < number) {
40 T card = dealCard();
41 if (card != null) {
42 hand[count] = card;
43 count++;
44 }
45 }
46
47 return hand;
48 }
49
50 public T dealCard() {
51 if (remainingCards() == 0) {
52 return null;
53 }
54
55 T card = cards.get(dealtIndex);
56 card.markUnavailable();
57 dealtIndex++;
58
59 return card;
60 }
61
62 public void print() {
63 for (Card card : cards) {
64 card.print();

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected