【发布时间】:2015-03-09 05:13:21
【问题描述】:
我创建了一个类,它可以被继承以使用 LinkedLists 创建一个 Stack 和一个 Queue,我已经通过了所有 JUnit 测试,除了 equals 测试,我仍然不知道为什么它不起作用。
@Override public boolean equals(Object o) {
if( o == null) return false;
if(o == this) return true;
if(!(o instanceof PushPop)) return false;
PushPop test1= this;
PushPop test = (PushPop)o;
while(!test.isEmpty() && !test1.isEmpty()){
if(test1.pop() != test.pop()) return false;
}
return true;
}
测试在比较值时发出断言错误,特别是当堆栈/队列的值比第二个值多时。
【问题讨论】:
-
您正在
equals期间修改您的堆栈。事实上,你正在清除它们。你知道这怎么可能是个问题吗? -
我正在修改堆栈,因为我需要比较所有对象,除了弹出每个元素并将其与其他堆栈弹出元素进行比较之外,我别无他法。我应该检查项目是否相同且顺序相同,尽管您确实有一点。我应该创建一个原始副本,这样它就不会被修改。我已经编辑了代码以添加数据结构的副本。
-
看看这是否能解决你的问题...我看到你运行了两次相同的测试,第二次返回
true,因为它们都是空的 -
它没有工作,它仍然发出一个 AssertionError。原谅我?我不明白你在说哪些测试
-
对不起,我想我不是很清楚。我的意思是“我想你在跑步……”
标签: java data-structures stack queue