2017-08-24 83 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应该简单地过滤出重复的对象(如预期的那样)。