我有一堂課。但是,當我創建一組具有相同私人成員價值的學生時,這些學生被視爲不同的學生。我的設置應該過濾重複項,但不會。HashCodeBuilder和EqualsBuilder不起作用?
class Student {
private StudentType m_type;
private List<Attribute> m_attributes;
private DegreeType m_dType
@Override
public boolean equals(Object o) {
if (!(o instanceof Student)) {
return false;
}
Student st = (Student) o;
EqualsBuilder eb = new EqualsBuilder()
.append(m_type, st.m_type)
.append(m_attributes, st.m_attributes)
.append(m_dType, st.m_dType);
return eb.isEquals();
}
@Override
public int hashCode() {
HashCodeBuilder hcb = new HashCodeBuilder()
.append(m_type)
.append(m_attributes)
.append(m_dType);
return hcb.toHashCode();
}
}
注意:StudentType和DegreeType是枚舉。我使用Java 8
這是我們要求[mcve]的地方。你提出的內容很短,但它不完整,因此也無法驗證。 –
'StudentType','Attribute'和'DegreeType'也必須實現hashCode並且等於正確。我猜這是你的問題。 – marstran
如果您使用的是Java 8,您可以使用Objects.hash(Object ...)和Object.equals(Object,Object)來代替 –