【发布时间】:2012-05-26 20:41:54
【问题描述】:
我正在制作一个玩 UNO 游戏的程序。在 UNO 牌组中,有些牌是重复的,因此我不能只列出整数列表;我必须使用对象。我计划在牌组中使用 LinkedList,但我知道 LinkedList 上的洗牌速度非常慢。
我的问题是,我应该......
- 完全避免使用 LinkedList,只使用 ArrayList
- 使用 ArrayList 或类似的,随机播放,然后将内容放入 LinkedList
- 构造一个 ArrayList,然后制作我自己的 shuffle 例程(也就是不使用 Random),在我们进行时添加到 LinkedList 中
- 不管怎样洗牌 LinkedList(就像这样,它并没有那么糟糕)
这不是作业;这是为了帮助玩得开心:)
【问题讨论】:
-
为什么要使用 LinkedList 作为一副纸牌?为什么不直接使用 ArrayList 作为卡片组?
-
因为你需要抽第一张牌,然后把牌加到最下面。 LinkedLists 很酷。
-
我会完全避免使用链表。使用 get/set first/last 也是 np 与任何其他数据类型。而且由于您需要洗牌,所以链表只满足一个要求
-
我只是打乱了一个链表和一个数组列表,链表用了 42 毫秒,数组列表用了 27 毫秒(每个都有 200000 个元素)。单副或双副牌都显示 0ms。
-
您可能想阅读 Jeff Atwood 的这篇文章:codinghorror.com/blog/2007/12/shuffling.html
标签: java