ArrayDeque包含Object?

时间:2012-12-18 08:45:19

标签: java arraydeque

我正在创建一个带有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?如果无法做到这一点,有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

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

缺点是你必须构建一个具有相同字段的沙发对象。如果不可能,您可以使用其他数据类型,例如地图。然后,您可以根据沙发的某些字段以唯一ID进行存储。

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