我有一个带有一组收藏项目的用户实体。我按如下方式注释该字段
void *a=malloc(size); // a references heap mem allocation
void *b=a; // b references heap mem allocation
free(a); // heap mem allocation freed
free(b); // error: heap mem allocation already freed
当我想在集合中添加新项目时,我从数据库中获取用户,获取他的收藏夹插入新项目并保存用户。添加和删除项目我使用Set接口的添加和删除功能。
问题:该集接受重复,并且删除函数不会从集合
中删除编辑:以下是我在集合中添加项目的方法:
class user {
@Id
private String id;
@DBREF
private HashSet <Item> favorites;
//empty and full constructor + getters and setters
}
答案 0 :(得分:0)
为了将来参考,我必须正确实现类Item的equals函数:
@Override
public boolean equals(Object o) {
if (o == this) return true;
if (!(o instanceof Item)) {
return false;
}
Item item = (Item) o;
// wrong (for comparing Strings): return id == item.getId()
// right:
return id.equals(item.getId());
}
@Override
public int hashCode() {
return Objects.hash(id);
}