2013-05-23 3 views
1

У меня есть экзамен, и это было в макете, и я не совсем уверен, как это сделать, это не домашняя работа, просто попытка понять, как это сделать. Благодарю.Обеспечить реализацию методов equals, hashCode и compareTo для класса

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); 

Спасибо, любая помощь будет принята с благодарностью.

+1

См [этот вопрос] (http://stackoverflow.com/q/27581/69875) для хорошего резюме 'Equals() 'и' hashCode() '. – Jonathan

ответ

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; 
+0

Спасибо большое, будет отличная помощь – user2216636

0

IDE, такие как Eclipse, могут генерировать hashCode и equals методы для вас (Источник -> генерировать 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; 
} 
Смежные вопросы