我正在尝试制作一个扑克游戏,并希望在我的ArrayList“deck”之间传输数据,并有另一个列表“hand”。我已将我的列表硬编码为包含标准卡片组中的所有52张卡片,并希望通过参考卡片中卡片的位置将第一张卡片从列表卡片弹出到列表手中。由于洗牌,我不能参考卡的名称来转移它,只需要将卡的位置转移到手上。有没有人知道这样做的功能,一种硬编码或甚至在哪里查看的方法。如果需要,我可以澄清任何事情。
答案 0 :(得分:1)
如果将卡片存储在ArrayDeque
中,您可能会觉得更容易。通过这样做,你可以打电话给Collections.shuffle
来洗牌,当你正在处理甲板上的下一张牌pop
时,呃,Deque
。
答案 1 :(得分:1)
如果hand
和deck
都属于ArrayList<Card>
类型,那么它只是:
hand.add(deck.remove(0));
请注意,ArrayList
并不是一个特别好的类,因为它不是为了有效删除列表末尾之外的条目而设计的。
答案 2 :(得分:0)
你应该在牌组中使用Stack,因为卡牌是如何操作的,它确实会“弹出”第一个对象。 (您也可以使用generic Queue interface来获得更现代的,类型安全的方法,并且您的实现仍然可以是列表集合。)
以下是shuffling a Stack的一些信息。然后,一个混乱的堆栈就像卡牌一样。
答案 3 :(得分:0)
您可以使用remove(int index)。它返回索引处的对象并将其从列表中删除。