这是一个list集合,但是第一个元素和第四个元素重复.怎么去掉重复啊?
试了 几次都不行.
groups=new ArrayList<UserPrivilegeModel>();
Set<UserPrivilegeModel> s=new HashSet<UserPrivilegeModel>();
for (int i = 0; i < outModel.getGroups().size(); i++) {
s.add(outModel.getGroups().get(i));
}UserPrivilegeModel的hashCode和equals如下,这个eclipse自动生成的 @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((sepAuthId == null) ? 0 : sepAuthId.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;
final UserPrivilegeModel other = (UserPrivilegeModel) obj;
if (sepAuthId == null) {
if (other.sepAuthId != null)
return false;
} else if (!sepAuthId.equals(other.sepAuthId))
return false;
return true;
}
解决方案 »
- 杭州做java开发的进!~晒工资、福利!
- 请教关于SpringSide3中filter查询的问题
- 请教一个奇怪的问题, ie影响service调用速度
- 使用jBuilder2006开发EJB,在哪地方修改JNDI的名字
- SSH事务提交问题
- 开源连接池组件 Proxool 0.8.3 问题
- 用JAVA如何结获 本机QQ,的数据???
- 初学java,请问Jsp和J2ee有什么关系,呵呵,简单问题
- 偶需要weblogic6.0 or 6.01sp4,那位高手请告之!
- 请问以下的判断该怎样写?Java Map
- 怎么优化系统了
- org.hibernate.dialect.SQLServerDialect源码解释
Set<UserPrivilegeModel> s=new HashSet<UserPrivilegeModel>();
for (int i = 0; i < outModel.getGroups().size(); i++) {
if(!s.contains(outModel.getGroups().get(i))){
s.add(outModel.getGroups().get(i));
}
}
我想主要是在hashCode和equals怎样写,但是我不会
s.addAll(groups);
把你的这个理由用java语言表达到equals方法里去,就可以了。至于hashCode,查查去吧,保证hashCode和equals的原则就行了。
另外,如果你认为不能有重复的元素,那你应该选择Set做为容器,而不是List。
hashCode和equals是这样写的,但是不行.不知为什么? @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((sepAuthId == null) ? 0 : sepAuthId.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;
final UserPrivilegeModel other = (UserPrivilegeModel) obj;
if (sepAuthId == null) {
if (other.sepAuthId != null)
return false;
} else if (!sepAuthId.equals(other.sepAuthId))
return false;
return true;
}
建议你将ArrayList换成Set,然后做填充。
如果得到的结果仍然有重复,那我觉得是hashCode方法的问题。
我觉得equals方法没啥毛病。