Java函数在列表之间传输数据?

Java函数在列表之间传输数据?,java,list,transfer,Java,List,Transfer,我正在尝试制作一个扑克游戏,希望在我的ArrayList“deck”和另一个列表“hand”之间传输数据。我已经硬编码了我的列表,将所有52张卡都包含在一个标准牌组中,并希望通过引用牌组中卡的位置将列表牌组中的第一张卡弹出到列表牌。由于洗牌,我不能参考牌的名称来转移它,只需要将牌的位置转移到手牌上。是否有人知道一个函数来实现这一点,一种硬编码的方法,甚至在哪里查找。如果需要,我可以澄清任何事情 如果你把一副牌放在一个容器中,你会发现这更容易些。通过这样做,你可以调用Collections.shu

我正在尝试制作一个扑克游戏,希望在我的ArrayList“deck”和另一个列表“hand”之间传输数据。我已经硬编码了我的列表,将所有52张卡都包含在一个标准牌组中,并希望通过引用牌组中卡的位置将列表牌组中的第一张卡弹出到列表牌。由于洗牌,我不能参考牌的名称来转移它,只需要将牌的位置转移到手牌上。是否有人知道一个函数来实现这一点,一种硬编码的方法,甚至在哪里查找。如果需要,我可以澄清任何事情

如果你把一副牌放在一个容器中,你会发现这更容易些。通过这样做,你可以调用
Collections.shuffle
来洗牌组,当你在处理
pop
牌组下一张牌时,呃,
Deque
你应该使用a作为牌组,因为这是牌组的操作方式,它确实会“弹出”牌组中的第一个对象。(您还可以将用于更现代、类型安全的方法,并且您的实现仍然可以是一个列表集合。)


这里有一些关于你的信息。然后,洗牌堆栈的行为与牌组完全相同。

您可以使用。它返回索引处的对象并将其从列表中删除。

如果
hand
deck
都属于
ArrayList
类型,那么它就是:

hand.add(deck.remove(0));

请注意,
ArrayList
并不是一个特别好的类,因为它不是为有效删除列表末尾以外的条目而设计的。

它是哪一个?你说的是第一张牌和一些索引牌。我需要第一张牌,这样我可以处理牌组中的第一张牌,删除对牌组中的牌的引用,然后引用新的牌组中的第一张牌。我正在研究这个建议。看起来很有希望。谢谢,为什么不将
堆栈
传递给
集合。shuffle
<代码>堆栈基于
向量
——查看
阵列定义
,了解非同步替代方案。(从1.6开始新增)。我当前正在使用ArrayList上的Collections.shuffle。如果使用堆栈有什么好处呢?好处是堆栈已经像一个甲板一样工作了。它为您建立了开箱即用的真实世界模型,因此您需要编写更少的逻辑来管理ArrayList,使其表现得像一副牌@保罗:这就是洗牌堆栈链接的建议。有趣的是,
Deque
也像一副牌一样工作。或者一个堆栈,正如API所说,“当用作堆栈时,这个类可能比堆栈快。”下面的投票结果是什么?公平地说,对于一个包含52个对象的集合,像deck这样的集合就可以了吗?我是Java新手,您如何将hand和deck应用于一个ArrayList?@user1174711您可能不会,它们是单独的列表。+1简单而直接。虽然我不同意效率方面的考虑。如果您正在编写Zynga这样的扑克服务器,性能可能是一个考虑因素。对于JavaN00B,最好保持简单@用户1174711:如果你觉得这个答案有用,别忘了接受它。这就是网站的运作方式。欢迎来到SO。我为一个个人项目编写游戏,所以性能不是一个真正的问题。也谢谢你的欢迎。