I'm coding a `Hand` class for a card game, and I'd like to be able to keep track of how many cards of each `Suit` are in `Hand`. I'm storing an `ArrayList` of type `Card` in `Hand`, which acts as my Hand. So this is how I'm keeping track of the amount of each `Suit` within `Hand` currently:

```
public class Hand {
    private ArrayList<Card> hand;
    private int clubs, diamonds, hearts, spades;

    public Hand() {
        hand = new ArrayList<Card>();
        clubs = 0;
        diamonds = 0;
        hearts = 0;
        spades = 0;
    }

    public Hand(Hand otherHand) {
        this.hand.addAll(otherHand.hand);
        CountSuits(otherHand.hand);
    }

    public Hand(ArrayList<Card> hand) {
        clubs = 0;
        diamonds = 0;
        hearts = 0;
        spades = 0;
        this.hand = hand;
        CountSuits(hand);
    }

    public void CountSuits(ArrayList<Card> cards) {
        clubs += Collections.frequency(cards, Card.suit.CLUBS);
        diamonds += Collections.frequency(cards, Card.suit.DIAMONDS);
        hearts += Collections.frequency(cards, Card.suit.HEARTS);
        spades += Collections.frequency(cards, Card.suit.SPADES);
    }
}

```

Is this a messy/incorrect way of doing this? It's giving odd outputs when testing which makes me think it's not watertight, and there's probably a better way. Here's my `Card` class:

```
public class Card {
    public enum rank {ACE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING};
    private rank Rank;
    public enum suit {CLUBS, DIAMONDS, HEARTS, SPADES};
    private suit Suit;

    public Card() {
        Rank = null;
        Suit = null;
    }

    public Card(rank Rank, suit Suit) {
        this.Rank = Rank;
        this.Suit = Suit;
    }
}

```