gpt4 book ai didi

java - 用 Java 存储卡片列表的最佳集合?

转载 作者:行者123 更新时间:2023-11-29 09:48:41 25 4
gpt4 key购买 nike

我有一个 Card 类,现在我想创建一个 Deck 类。我正在查看 Collections 中可用的内容来存储卡片列表,我知道我需要尽可能多的自由来操作卡片。

我希望能够在牌组中的任何位置插入新牌、洗牌(Collections.shuffle() 应该可以)、查看任何牌并从顶部、底部和中间的任何位置取出(移除)牌。任何你可以用一堆卡片做的事情都应该是可能的。例如,没有“仅后进先出”的限制。

这是我目前所发现的以及我在每个问题上遇到的问题:

  • List:似乎提供了我需要的尽可能多的自由,但很明显,我需要为更简单的事情添加一些辅助函数,例如在顶部选择卡片。目前仍然是我最喜欢的解决方案。
  • Stack:可能会完成我所要求的一切,但是,据我所知,这并不是最好的实现(扩展 Vector 而不是只是其行为中的堆栈?)<
  • Deque:具有我想要的功能,但似乎不允许在任何索引处插入新项目(也不是“getAt(index)”afaik)

对于我正在尝试做的事情,是否有比上述任何类(class)都更好的预制类(class)?如果不存在任何“完美”的东西,我应该使用哪个类作为扩展的基础?

注意:我不知道我现在是否关心同步。我也从 Java 6 的角度来看这个问题,但我对 Java 7 解决方案持开放态度,特别是如果有现成的解决方案的话。

最佳答案

我会采用基于List 的方法。您的要求相当模糊,但是 List 为您想要执行的操作提供了良好的基础。我建议在您的 Deck 类中包装一个 List(而不是让 Deck 扩展一个具体的 List 类,例如作为 ArrayListLinkedList)。所有 Deck 行为都应该由 Deck 类定义;您当然不希望自动继承所有 List 行为,因为它可能并不都适合您的 Deck 对象。

关于java - 用 Java 存储卡片列表的最佳集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17434308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com