變量名稱有點混亂。試想一下:
// private MyArrayList<MyStack<Card>> piles;
private final ArrayList<Stack<Card>> allPiles;
public Table() {
// MyStack<Card> piles = new MyStack<>();
allPiles = new ArrayList<>();
}
那麼你可以做這樣的事情:
public void addCardToPile(Card card, int pileIndex) {
while (allPiles.size() < pileIndex) {
allPiles.add(new Stack<Card>());
}
allPiles.get(pileIndex).push(card);
}
public Card getTopCardFromPile(int pileIndex) {
while (allPiles.size() < pileIndex) {
allPiles.add(new Stack<Card>());
}
if (allPiles.get(pileIndex).isEmpty()) {
return null;
}
return allPiles.get(pileIndex).pop();
}
但如果ArrayList
是最合適的位置目前還不清楚。考慮一個Map<Integer, Stack<Card>> allPiles
,而不是pileIndex
有像pileNumber
。或Map<String, Stack<Card>> allPiles
與pileName
。
我提出的「重複」問題談論「列表清單」。但從本質上講,如果您談論列表,堆棧列表或任何集合列表,則無關緊要。 – GhostCat