如何从堆栈中获取具有特殊id的对象?

时间:2011-12-02 07:59:29

标签: java stack loops identifier

在我的cardgame项目中,我模拟了一个堆叠的卡片。堆/堆的每张卡具有唯一的标识符。

现在我想将具有特定标识符的对象从堆栈中取出。 是否有一个有效的选择来实现它?首先,我想到了一个迭代器,它将迭代堆栈...但如果堆栈中有很多卡,它不是最佳解决方案。

4 个答案:

答案 0 :(得分:1)

您可以将“堆栈卡”称为堆栈,但不应将其与堆栈数据结构混淆。我将为您的游戏中的卡片对象推荐两种数据结构:

  1. 保持某种形式的排序的列表(以便您知道这些卡的顺序)。 ArrayList在这里运行良好。

  2. 用于快速检索的HashHap(请记住,Map通常会丢失其排序)。

  3. 由于SAME卡将存在于两种数据结构中,因此您将不会使用更多的内存,但将具有两种数据结构(快速查找和排序)的优势。你必须处理一些家务,但这是预期的。

答案 1 :(得分:0)

您还可以保留Map<Key, Card>按照其唯一ID跟踪卡片(Key可能是StringInteger等)。然后,您可以致电StackVector继承自Card,并传递您想要删除的Stack

这假设您受限于{{1}}数据结构,您可能不会(请参阅其他答案)。

答案 2 :(得分:0)

嗯,这就是堆栈的工作原理。要从堆栈中获取除顶部项目之外的其他项目,您必须弹出所有项目并将它们推送到另一个堆栈,直到找到您的项目。然后你必须弹出另一个堆栈中的所有项目并将它们推回到原始堆栈。

如果您手动寻找卡片,那就是您要做的事情。

答案 3 :(得分:0)

堆叠是LIFO,你必须弹出物品,直到你找到所需的物品。然后再推回弹出的物品。你应该使用像地图这样的东西来获得带有ID的物品。