【发布时间】:2017-08-02 03:58:18
【问题描述】:
我有这个方法用来从 SetOfBooks 类中删除一本书。我也试过循环和删除,也用谷歌搜索。这不会删除我传递的 Book 对象并返回 false,我无法弄清楚我哪里出错了。我想要从列表中删除给定对象的方法。 请帮忙。谢谢你
以下是我调用 removebook() 方法的代码。
【问题讨论】:
-
真正的问题是什么?
-
我怀疑你的意思是
public class SetOfBooks extends Vector<Book> {,而不是public class SetOfBooks<Book> extends Vector<Book> {。在后一种情况下,Book是一个类型变量,而不是Book类。 -
我认为您需要创建并发布一个像样的minimal reproducible example 以获得像样的答案。附带问题:您是否在 Book 类中正确覆盖了 equals 和 hashCode?span>
-
remove使用indexOf来定位元素的位置,但indexOf使用equals方法来确定搜索到的对象是否与当前查看的对象相同。问题是,如果您不在 Book 中覆盖equals方法,它将从其超类继承,在您的情况下是 Object,并且在那里使用的实现只是使用==来查看两个引用是否相等,而不是如果两个对象代表相同的状态。 -
是的,我是对的——您没有覆盖这两个关键方法,equals 和 hashCode。请继续阅读,然后解决此问题。