【问题标题】:ArrayDeque contains Object?ArrayDeque 包含对象?
【发布时间】:2012-12-05 10:30:50
【问题描述】:

我正在创建一个带有 ArrayDeque 的基本库存系统,其中的东西被推送到库存中。

Couch couch1 = new Couch("I wouldn't sit on it.", 100, true);
roomList[0].inventory.add(couch1);

我正在检查一个物品是否在这样的房间里。

if (input.matches(".*look.*"))
{
    if(input.matches(".*Couch.*"))
    {
        if(roomList[currentRoom].inventory.contains(???))
        {
            //code to be executed.
        }
    }
}

我在 ???为了检查库存ArrayDeque是否包含对象couch1?如果这不可能,有没有更好的方法来做到这一点?

【问题讨论】:

  • 你为什么不把couch1放在那里?
  • 您想检查集合中是否有某个对象,但您不知道该对象在运行时是什么?

标签: java arraydeque


【解决方案1】:

contains() 函数基于您对equals() 的实现。默认情况下,您必须提供完全相同的对象(所以couch1)。如果您覆盖,您可以制作自己的 equals 版本,例如通过比较所有字段。一个非常有用的工具是 Apache EqualsBuilder,这也解释了如何实现 equals() 函数。

那么缺点是您必须构造一个具有相同字段的沙发对象。如果这是不可能的,您也许可以求助于另一种数据类型,例如地图。然后,您可以根据沙发的某些字段通过唯一 id 进行存储。

最后一种选择是不使用 contains() 函数,而是创建自己的函数,循环遍历 Deque 并根据其他一些选择标准进行过滤。

【讨论】:

    猜你喜欢
    • 2014-03-27
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    相关资源
    最近更新 更多