@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Employee other = (Employee) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
Set set = new HashSet();
// Add elements to the set
set.add("a");//true
set.add("b");//true
set.add("c");//true
set.add("d");//true
set.add("a");//false
4条答案
按热度按时间5n0oy7gb1#
如果你正在使用
java.util.Set
的实现,只要你的equals
和hashCode
方法被正确实现,它就不应该允许重复。不知道为什么你的问题上有hashmap和hashtable作为标签。也许你应该重新措辞你的问题,并添加给你问题的代码?编辑:考虑您的编辑:
如果你使用
Set
,你的员工应该有以下方法:字符串
qmb5sa222#
与@Dirk类似,您也可以使用org. apache. commons中的HashCodeBuilder和HashsBuilder。
它看起来像这样:
字符串
mrphzbgm3#
“要在
Set
中存储唯一的用户定义对象,您必须显式地删除hashCode
和equals
方法以学生详细信息为例”字符串
pieyvz9o4#
设置仅存储唯一对象
例如:
字符串
add将返回false,当你试图存储已经在Set中的对象