Salve a tutti, per esercizo devo implementare un mazzo di carte come Collection. Ho deciso di usare un ArrayList per una serie di motivi, in cui andrò ad inserire le 40 istanze della classe Carta (che ha un valore da 1 a 10 che rappresenta il numero e un'altro da 1 a 4 che rappresenta il seme. Quello che mi chiedevo é se fare una classe con una variabile di istanza del tipo ArrayList o direttamente far ereditare la mia classe da appunto ArrayList. In sintesi quale delle due soluzioni vi sembra la migliore? Grazie 
SOLUZIONE 1:
codice:
import java.util.*;
public class DeckCard {
ArrayList deck = new ArrayList();
final int NSUIT = 4;
final int NCARD = 10;
DeckCard() {
for (int suit = 1; suit <= NSUIT; suit++) {
for (int value = 1; value <= NCARD; value++) {
deck.add(new Card(value, suit));
}
}
}
public void shuffle() {
Collections.shuffle(deck);
}
public void sort() {
Collections.sort(deck);
}
public Object pick() {
Object retval = deck.get(0);
deck.remove(0);
return retval;
}
public boolean insert(Collection cards) {
return deck.addAll(cards);
}
public int size(){
return deck.size();
}
@Override
public String toString() {
ListIterator i = deck.listIterator();
String retval = "";
while (i.hasNext()) {
retval += ((Card) i.next()).toString() + "\n";
}
return retval;
}
}
SOLUZIONE 2:
codice:
import java.util.*;
public class DeckCard extends ArrayList{
final int NSUIT = 4;
final int NCARD = 10;
DeckCard() {
for (int suit = 1; suit <= NSUIT; suit++) {
for (int value = 1; value <= NCARD; value++) {
add(new Card(value, suit));
}
}
}
public void shuffle() {
Collections.shuffle(this);
}
public void sort() {
Collections.sort(this);
}
public Object pick() {
Object retval = get(0);
remove(0);
return retval;
}
public boolean insert(Collection cards) {
return addAll(cards);
}
@Override
public String toString() {
ListIterator i = listIterator();
String retval = "";
while (i.hasNext()) {
retval += ((Card) i.next()).toString() + "\n";
}
return retval;
}
}