List 的removeall需要重写equals才有效
来源:互联网 发布:黑莓q10软件 编辑:程序博客网 时间:2024/06/05 08:35
removeall重写equal
list<A> a list如果要调用remove(bo),或者removeAll(a) 需要重写A 的equals方法,因为remove,removeAll方法时两个从左边移除与右边相等的对象,
那么在未重写equals方法的情况下,用默认的,默认的equals方法时比较两个对象的存储位置是否一致,以确定相等,这显然不符合业务需要,我们需要重写,让其
根据id等少数几个字段判断(有些方法会自动调用equals,然后根据equals返回的结果再执行相应的操作,比如list的removeAll,为了符合业务需要需要重写)
A Bean:类中
public class OpmUser implements Serializable {
public boolean equals(Object destination)
{
boolean retVal = false;
if ((destination != null) && (destination.getClass().equals(getClass())))
{
OpmUser bean = (OpmUser)destination;
if ((bean.getId() == null) && (getId() == null)) {
retVal = true;
} else if ((bean.getId() != null) && (bean.getId().equals(getId()))) {
retVal = true;
}
}
return retVal;
}
}
@RequestMapping(value="/system/opmRole/userRole")
public String userRole(OpmRole opmRole,HttpServletRequest request,Model modle) {
//OpmUser u= new OpmUser();
//u.setId(opmRole.ge);
//opmUserService.getOpmUser(u);
//modle.addAttribute("vo", opmUserService.getOpmUser(u));
String id ="";//当前分配用户的角色Id
String organid ="";
String roleId="";
Subject currentUser = SecurityUtils.getSubject();
Session session = currentUser.getSession();
OpmUser user =(OpmUser) session.getAttribute("currentUser");
OpmUserRole u = new OpmUserRole();
u.setUserid(user.getId());
id=opmRole.getId();
List<OpmUserRole> ur=opmUserRoleService.getOpmUserRole(u);//本系统中是一个用户一个角色
if((opmRole.getId()==null||"".equals(opmRole.getId()))&&(ur!=null&&ur.size()>0&&ur.get(0)!=null)){
id= ur.get(0).getRoleid();
}
if(ur!=null&&ur.size()>0&&ur.get(0)!=null){
roleId=ur.get(0).getRoleid();//登录用户角色Id
}
Map<String,Object> param1 = new HashMap<String,Object>();
param1.put("roleId", id);
TbCusMarkVo org= opmRoleService.getOrganByRoleId(param1);
Map<String,Object> param = new HashMap<String,Object>();
param.put("organid", org.getMarketKey()+"");
List<OpmUser> usersAll= opmUserService.getUserByOrgId(param);
Map<String,Object> param2 = new HashMap<String,Object>();
param2.put("rId", id);
List<OpmUser> usersL= opmUserService.getUserByRoleId(param2);
usersAll.removeAll(usersL);
modle.addAttribute("id", opmRole.getId());
modle.addAttribute("organid", opmRole.getOrganid());
modle.addAttribute("usersL", usersL);
modle.addAttribute("usersR", usersAll);
if(opmRole.getOrganid()!=null&&!"".equals(opmRole.getOrganid())){
TbCusMark tbCusMark = new TbCusMark();
tbCusMark.setMarketKey(BigDecimal.valueOf(Long.valueOf(opmRole.getOrganid())));
tbCusMark = tbCusMarkService.getMark(tbCusMark);
modle.addAttribute("organName", tbCusMark.getMarketName());
}
if(!"".equals(opmRole.getId())&&opmRole.getId()!=null){
OpmRole ro1 = new OpmRole();
ro1.setId(opmRole.getId());
OpmRole ro = opmRoleService.getOpmRole(ro1);
if(ro!=null){
modle.addAttribute("vo", ro);
}
}
return "/system/opmRole/userRole";
}
- List 的removeall需要重写equals才有效
- List的removeAll()方法与equals()方法之坑
- 重写equals时需要注意的地方
- List的removeAll方法异常?
- [C#]list的removeall用法
- list set map 重写的equals方法
- 重写equals方法一般需要重写hashCode方法的原因
- 什么时候需要重写equals方法
- 怎样重写equals方法才安全?
- List 的 removeAll 方法的效率
- list的removeAll底层算法,性能,优化
- 重写equals需要同时重写hashCode()
- java重写equals方法需要注意的几点
- java重写equals方法需要注意的几点
- java重写equals方法需要注意的几点
- 在重写了对象的equals方法后,还需要重写hashCode方法吗?
- 在重写了对象的equals方法后,还需要重写hashCode方法吗?
- 在重写了对象的equals方法后,还需要重写hashCode方法吗?
- 手机SD卡的检测方法
- NYOJ--27--dfs--水池数目
- day65_activiti
- 数据库设计,页面传值
- 第8章 确认访问用户身份的验证
- List 的removeall需要重写equals才有效
- Android中dp与px之间的转换
- dwz 加入自己验证(比如目的是提交前组织数据)
- Linux下安装JDK
- dwz跳转jsp及相应后台跳转控制的对应配置
- springMvc基于注解的异常处理
- arcgis_js入门示例一
- 程序流程设计
- 二、递归简论-算法