删除一个列表中的所有元素并添加到另一个列表 - Java

时间:2015-02-22 22:41:26

标签: java arraylist stack

所以我试图从播放器中删除所有卡片' Rack' (一个ArrayList)并将它放在丢弃堆(Stack)中,一个接一个。到目前为止,我有以下代码,我已经意识到,一旦它达到5,它就会停止。(注意:每个玩家机架有10张卡。)

        int rackSize = player.getPlayerRack().getRack().size(); // rackSize = 10
        for (int i = 0; i < rackSize; i++) {
            getDeck().getDiscardPile().add(player.getPlayerRack().getRack().remove(i));
        }

我的问题是如何删除播放器中的所有项目&#39; Rack&#39;所以rackSize = 0,并将它们全部添加到丢弃堆中?

非常抱歉,如果这令人困惑。你可以通过说ArrayList<Integer> hand中有10个整数来概括这一点,所以:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]。如何从此列表中删除所有项目并将其添加到Stack<Integer> discardPile

2 个答案:

答案 0 :(得分:5)

当您从Rack移除元素时,您正在发生什么事情,您仍在使用i++递增,这意味着旧索引处的新值{ {1}}仍被遗忘。您要做的是将代码更改为:

i

这样,您始终可以访问int rackSize = player.getPlayerRack().getRack().size(); // rackSize = 10 for (int i = 0; i < rackSize; i++) { getDeck().getDiscardPile().add(player.getPlayerRack().getRack().remove(0)); } 中的第一个新元素,直到它为空,假设在执行此代码时Rack未重新填充。

答案 1 :(得分:0)

使用0而不是i来访问ArrayList。

当你删除一个元素时,它不再在ArrayList中,所以你必须记住这一点 - 通过数组索引的进一步引用应该在每次迭代中递减1。因此,您可能希望每次都能访问第一个项目。