我有一个考试,这是在模拟,我不太确定如何去做,这不是功课,它只是试图了解如何做到这一点。感谢。
public class Book{
private final String title;
private final String author;
private final int edition;
private Book(String title, String author, int edition)
{
this.title = title;
this.author = author;
this.edition = edition;
}
public String getTitle()
{
return title;
}
public String getAuthor()
{
return author;
}
public String getEdition()
{
return edition;
}
}
我需要为上面的代码提供equals,hashCode和compareTo方法的实现。
我不确定如何解决这个问题,对于compareTo方法,它是否与此类似?
title.compareTo(title);
author.compareTo(author);
edition.compareTo(edition);
谢谢,非常感谢任何帮助。
答案 0 :(得分:0)
你的compareTo应该是这样的:
title.compareToIgnoreCase(otherTitle);
...
等于:
if(null == title || null == author || null == editor)
{
return false;
}
if(!title.equals(otherTitle)
{
return false;
}
if(!author.equals(otherAuthor)
{
return false;
}
if(!editor.equals(otherEditor)
{
return false;
}
return true;
答案 1 :(得分:0)
看看这个。
您可以使用此包中的构建器来创建默认实现。
答案 2 :(得分:0)
Eclipse之类的IDE可以为您生成hashCode
和equals
方法(Source - > generate hashCode()和equals())。您甚至可以指定对象的哪些字段需要匹配,以使其被视为“相等”。
例如,这是Eclipse为您的类生成的内容:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((author == null) ? 0 : author.hashCode());
result = prime * result + edition;
result = prime * result + ((title == null) ? 0 : title.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Book other = (Book) obj;
if (author == null) {
if (other.author != null)
return false;
} else if (!author.equals(other.author))
return false;
if (edition != other.edition)
return false;
if (title == null) {
if (other.title != null)
return false;
} else if (!title.equals(other.title))
return false;
return true;
}