我有两个POJO类地址和user_details。 我需要知道代码如何运行
@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 :(得分:0)
不幸的答案是&#34;它取决于&#34;。 HashSet将对您放入其中的任何对象使用hashcode()函数。由于我们没有您的Address类的代码,我们无法真正了解您的对象如何实现此方法。
一般来说,大多数IDE提供的方法允许您自动生成hashcode()的合理实现。请记住,您还应该为覆盖hashcode()的任何对象重写equals(Object o)。
hashcode()和equals()具有所谓的&#34;合同&#34;。当两个对象相等时,它们的hashcode()方法应该返回相同的数字。相反的情况不一定是真的。
如果你为Address正确实现了这个,那么HashSet应该只是过滤掉重复的对象(如预期的那样)。