检查列表中是否已

检查列表中是否已

我正在做一个小程序,将书架放在书架清单中。如果之前已经输入了架子编号,则无法再次输入。但是,它不起作用。

这是我在主类中的代码:

    Shelf s = new Shelf(1);
    Shelf s2 = new Shelf(1);
    Library l = new Library();
    l.Addshelf(s);
    l.Addshelf(s2);


如您所见,我在两个对象中都输入了1作为架子编号,因此下面的代码应从库类中运行

public void Addshelf(Shelf s)
{
    List li = new ArrayList();
    if(li.contains(s))
    {
        System.out.println("already exists");
    } else {
      li.add(s);
    }
}


问题必须在上述方法中。我想知道如何检查列表中是否已经存在该架子编号,在这种情况下,它应该使用上面的语句提示我-“已经存在。

最佳答案

您必须重写equals中的Shelf方法以获得所需的行为。

在不覆盖equals的情况下,调用ArrayList::containsArrayList::indexOf将使用Object::equals的默认实现,该实现比较对象引用。

@Override
public boolean equals (Object anObject)
{
    if (this == anObject)
        return true;
    if (anObject instanceof Shelf) {
        Shelf anotherShelf = (Shelf) anObject;
        return this.getShelfNumber() == anotherShelf.getShelfNumber(); // assuming this
                                                                       // is a primitive
                                                                       // (if not, use equals)
    }
    return false;
}

09-05 19:30