变量名称有点混乱。试想一下:
// 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