最佳集合存储Java的卡列表?

leo*_*orn 1 java collections

我有一个Card类,现在我想创建一个Deck类.我正在查看收藏中可用于存储卡片列表的内容,因为我知道我需要尽可能多地自由操作卡片.

我希望能够在牌组的任何地方插入新牌,随机播放(Collections.shuffle()应该可以使用),偷看任何牌并从顶部,底部和中间的任何位置取出(移除)牌.你可以用一堆卡片做任何事情.例如,没有"仅LIFO"限制.

以下是我到目前为止所发现的以及我对每个问题的看法:

  • 清单:似乎提供了我所需要的尽可能多的自由,但显然,我需要为更简单的事情添加一些辅助功能,例如在顶部挑选卡片.现在仍然是我最喜欢的解决方案.
  • 堆栈:可能是我要问的所有,但是,从我所读到的,并不是最好的实现(扩展Vector并且不仅仅是它的行为中的堆栈?)
  • Deque:有我想要的功能,但似乎不允许在任何索引处插入新项目(也不是"getAt(index)"afaik)

对于我正在尝试做的事情,是否有比上述任何一个更好的预制课程?如果不存在"完美",那么我应该将哪个类用作扩展的基础?

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

Ted*_*opp 9

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