2017-08-24 69 views
0

我有兩個POJO類地址和user_details。 我需要知道如何在代碼運行HashSet在休眠

@ElementCollection 
    private Set<Address>listOfAddresses = new HashSet(); 
    public Set<Address> getListOfAddresses() { 
     return listOfAddresses; 
    } 
    public void setListOfAddresses(Set<Address> listOfAddresses) { 
     this.listOfAddresses = listOfAddresses; 
    } 

我在main方法實現爲

Address addr2 = new Address(); 
     addr2.setStreet("Second Street"); 
     addr2.setCity("Second City"); 
     addr2.setState("Second State"); 
     addr2.setPincode("20002"); 

user.getListOfAddresses().add(addr2); 

回答

0

不幸的答案是「看情況」。 HashSet將在您放入它的任何對象上使用hashcode()函數。由於我們沒有Address類的代碼,因此我們無法真正瞭解您的對象如何實現此方法。

通常情況下,大多數IDE提供的方法允許您自動生成hashcode()的合理實現。請記住,你也應該重寫equals(Object o)你覆蓋hashcode()的任何對象。

hashcode()和equals()具有所謂的「契約」。當兩個對象相等時,它們的hashcode()方法應該返回相同的數字。相反並不需要是真實的。

如果您正確地爲Address執行此操作,則HashSet應該簡單地過濾出重複的對象(如預期的那樣)。