我正在用一个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?如果这不可能,有没有更好的方法呢?
发布于 2012-12-18 16:59:36
contains()函数基于您的equals()实现。默认情况下,您必须提供完全相同的对象(因此为couch1)。如果覆盖,则可以创建自己的equals版本,例如,通过比较所有字段。一个非常有用的工具是Apache EqualsBuilder,它还解释了如何实现equals()函数。
这样做的缺点是,您必须使用相同的字段构造一个couch对象。如果这是不可能的,您可以求助于另一种数据类型,例如映射。然后,您可以根据沙发的某些字段通过唯一的id进行存储。
最后一种选择是不使用contains()函数,而是创建自己的函数,该函数循环遍历Deque并根据其他一些选择条件进行过滤。
https://stackoverflow.com/questions/13929224
复制相似问题