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";
}
相关推荐
userList.removeAll(maleUsers); ``` 2. 参数传递: Java中,对象作为参数传递时,实际上是传递了对象的引用。这意味着,如果你在方法中改变参数对象的属性,这些变化会影响到原始对象。然而,如果你重新赋值...
- `removeAll(Collection c)`:从当前集合中移除另一个集合的所有元素。 - `retainAll(Collection c)`:保留当前集合中与另一个集合相同的元素,删除其他元素。 - `toArray()`:将集合转换为数组。 在实际应用中,...
在使用这些容器时,对于自定义对象,为了正确实现equals()和hashCode()方法,以确保在Set或Map中正确识别对象,通常需要重写这两个方法。此外,处理多线程环境时,需注意线程安全问题,某些容器如ArrayList和HashMap...
在使用集合时,我们经常需要进行一些操作,例如`add()`、`remove()`、`contains()`、`containsAll()`、`equals()`等。`equals()`方法在默认情况下比较的是对象的引用,但在`String`等类中被重写以比较内容。对于...
这个方法会调用对象的`equals()`方法进行比较,因此为了正确比较自定义对象,你需要重写`equals()`方法。 - **remove(Object obj)**: 移除集合中与指定元素相等的第一个元素。同样,这依赖于`equals()`方法。如果...
8. equals方法:Java中,如果没有重写equals方法,它默认会调用Object类的equals方法,比较对象的内存地址,这里输出"Both are not equal"(D选项正确)。 9. 存储字符串:HashMap适合存储键值对数据,如这里的格式...
集合操作包括`size()`、`contains()`、`clear()`、`add()`、`remove()`、`addAll()`和`removeAll()`等。 6. 数据类型包装类:如`Integer`、`Double`等,它们主要用于将基本类型转换为对象,以便参与面向对象编程。...
使用put方法添加元素,removeAll用于删除集合中的元素。 6. 访问控制符:`private`修饰的成员变量只能被同一类的内部访问和修改,不能被其他类(包括同一包内的其他类和子类)访问。 7. equals方法:所有Java对象...
在使用HashSet存储自定义对象时,为了保证元素的唯一性,需要重写对象的`hashCode()`和`equals()`方法。 4. Map接口: Map接口不继承Collection,它存储键值对,每个键都是唯一的。常见的实现类有HashMap、...
为了实现这个特性,`Set`中的每个元素都必须重写`equals()`和`hashCode()`方法。 #### 2. Set接口的实现类 `Set`接口有几个重要的实现类,包括: - **HashSet**: 基于哈希表实现的`Set`,不保证元素的顺序。 - **...
5. 集合框架中的比较:在Java集合框架中,`List`、`Set`和`Queue`等接口都提供了`containsAll()`、`removeAll()`、`retainAll()`等方法,这些方法内部都涉及到了元素的比较。此外,`Collections.sort()`和`Arrays....
removeAll()可以清空Map中的所有元素(选项D正确)。 6. 程序执行结果:对于给定的程序,如果执行后count的结果是(B)10,说明程序中可能有一个for循环,循环10次,每次递增count。 7. 访问控制符private:被...
- `removeAll(Collection<?> c)`:移除与指定集合中相同的元素。 - `size()`:返回集合中元素的数量。 - `toArray()`和`toArray(T[] a)`:将集合转换为数组。 5. **Map接口**代表键值对的集合,提供了以下方法:...
//var jsondata = JsonConvert.SerializeObject(item.ToList()); // Clients.All.getOnlineUserlist(jsondata);// 调用客户端的getOnlineUserlist来获得在线人们 } /// /// 发送消息 /// /// 发送给用户...
在BaseActivity类中,我们调用了ActivityCollector类的addActivity()和removeActivity()方法,这样其他类继承BaseActivity类的时候就会自动重写这两个方法。 ```java public class BaseActivity extends Activity {...
9.6.2. List of All Constants 9.6.3. Self-Defined OUTPUT Formats with ISO 9.6.4. Self-defined OUTPUT formats using PHP's date() format specifiers 9.7. Working examples 9.7.1. Checking dates 9.7.2....