gpt4 book ai didi

java - 什么时候应该重写Java中的equal方法

转载 作者:行者123 更新时间:2023-11-29 07:00:15 25 4
gpt4 key购买 nike

<分区>

所以在学校我们是第一次学习 Java,我们想模拟一个 Java 库应用程序,其中我们有两个名为“Book”的类和另一个名为“的类,并且同一个目录中不能有具有相同 ISBN 的书shelf。所以我所做的就像 shelf 类中的以下内容,它工作正常。

private boolean checkIsbnNumber(Book book){
boolean isbnTaken = false;
for(Book bList : this.bookList){
if(bList.getIsbn().equals(book.getIsbn())){
System.out.println("The books isbn number is taken");
isbnTaken = true;
}
}
return isbnTaken;
}

但是我们的讲座告诉我们的是以下内容,继续书本类(class)并将散列和 equals 方法重写为以下内容。

@Override
public boolean equals(Object obj) {
if (obj instanceof Book)
return isbn.equals(((Book)obj).isbn);
else
return false;
}

@Override
public int hashCode() {
int hash = 3;
hash = 53 * hash + Objects.hashCode(this.isbn);
return hash;
}

然后再次在 shelf 类中执行以下操作。

public boolean checkISBN(Book b){
boolean isbnExists = false;
for (Book bList : bookList)
{
if(bList.getIsbn().equals(b.getIsbn())){
System.out.println("Book ISBN already exist");
isbnExists = true;
}
}
return isbnExists;
}

我想知道这样做的意义是什么?有什么好处吗?为什么我们要在 equals 方法中再次调用 equals 方法?一些帮助将不胜感激。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com