在java中比较堆栈元素和对象的搜索
我在处理我编写的这个“search()”函数时遇到了一些麻烦。我需要检查我的堆栈中是否已经存在一个对象。我的物体看起来像这样:
Boat [mLeft=[0, 0, 0], boat=L, mRight=[0, C, V]]
我的堆栈是这样的:
Boat [mLeft=[0, 0, 0], boat=L, mRight=[0, C, V]]
Boat [mLeft=[0, 0, 0], boat=C, mRight=[L, 0, V]]
Boat [mLeft=[0, 0, 0], boat=V, mRight=[L, C, 0]]
Boat [mLeft=[0, 0, 0], boat=0, mRight=[L, C, V]]
这是我的“搜索”功能:
public boolean search(Boat b){
boolean r=false;
for(int i=0;i<btStack.size();i++)
{
if(btStack.elementAt(i).equals(b))
{
r = true;
}
}
return r;
}
这从来都不是真的。。。我不知道为什么。你能帮忙吗?谢谢
# 1 楼答案
对象类的默认相等行为基于引用比较相等。您需要在船类中重写
equals
。使用equals时,还应该覆盖hashcode
参考资料: