`
y806839048
  • 浏览: 1119262 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

List 的removeall需要重写equals才有效

 
阅读更多

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";

 

}

 

分享到:
评论

相关推荐

    避坑手册 - JAVA编码中容易踩坑的十大陷阱.doc

    userList.removeAll(maleUsers); ``` 2. 参数传递: Java中,对象作为参数传递时,实际上是传递了对象的引用。这意味着,如果你在方法中改变参数对象的属性,这些变化会影响到原始对象。然而,如果你重新赋值...

    Java容器学习要点1136

    - `removeAll(Collection c)`:从当前集合中移除另一个集合的所有元素。 - `retainAll(Collection c)`:保留当前集合中与另一个集合相同的元素,删除其他元素。 - `toArray()`:将集合转换为数组。 在实际应用中,...

    java容器(持有对象)

    在使用这些容器时,对于自定义对象,为了正确实现equals()和hashCode()方法,以确保在Set或Map中正确识别对象,通常需要重写这两个方法。此外,处理多线程环境时,需注意线程安全问题,某些容器如ArrayList和HashMap...

    7-java进阶-集合1

    在使用集合时,我们经常需要进行一些操作,例如`add()`、`remove()`、`contains()`、`containsAll()`、`equals()`等。`equals()`方法在默认情况下比较的是对象的引用,但在`String`等类中被重写以比较内容。对于...

    Java基础_Collection学习(List & Set)

    这个方法会调用对象的`equals()`方法进行比较,因此为了正确比较自定义对象,你需要重写`equals()`方法。 - **remove(Object obj)**: 移除集合中与指定元素相等的第一个元素。同样,这依赖于`equals()`方法。如果...

    JAVA基础考试题.docx

    8. equals方法:Java中,如果没有重写equals方法,它默认会调用Object类的equals方法,比较对象的内存地址,这里输出"Both are not equal"(D选项正确)。 9. 存储字符串:HashMap适合存储键值对数据,如这里的格式...

    javaSE-java-core.docx

    集合操作包括`size()`、`contains()`、`clear()`、`add()`、`remove()`、`addAll()`和`removeAll()`等。 6. 数据类型包装类:如`Integer`、`Double`等,它们主要用于将基本类型转换为对象,以便参与面向对象编程。...

    【精美排版】JAVA基础测验题.docx

    使用put方法添加元素,removeAll用于删除集合中的元素。 6. 访问控制符:`private`修饰的成员变量只能被同一类的内部访问和修改,不能被其他类(包括同一包内的其他类和子类)访问。 7. equals方法:所有Java对象...

    黑马程序员java培训就业班笔记集合体系总结.docx

    在使用HashSet存储自定义对象时,为了保证元素的唯一性,需要重写对象的`hashCode()`和`equals()`方法。 4. Map接口: Map接口不继承Collection,它存储键值对,每个键都是唯一的。常见的实现类有HashMap、...

    Map、Set、Iterator迭代详解

    为了实现这个特性,`Set`中的每个元素都必须重写`equals()`和`hashCode()`方法。 #### 2. Set接口的实现类 `Set`接口有几个重要的实现类,包括: - **HashSet**: 基于哈希表实现的`Set`,不保证元素的顺序。 - **...

    比较

    5. 集合框架中的比较:在Java集合框架中,`List`、`Set`和`Queue`等接口都提供了`containsAll()`、`removeAll()`、`retainAll()`等方法,这些方法内部都涉及到了元素的比较。此外,`Collections.sort()`和`Arrays....

    JAVA基础考试题.pdf

    removeAll()可以清空Map中的所有元素(选项D正确)。 6. 程序执行结果:对于给定的程序,如果执行后count的结果是(B)10,说明程序中可能有一个for循环,循环10次,每次递增count。 7. 访问控制符private:被...

    浅析Java类和数据结构中常用的方法

    - `removeAll(Collection&lt;?&gt; c)`:移除与指定集合中相同的元素。 - `size()`:返回集合中元素的数量。 - `toArray()`和`toArray(T[] a)`:将集合转换为数组。 5. **Map接口**代表键值对的集合,提供了以下方法:...

    Microsoft.AspNet.SignalR.2.4.0 Microsoft.AspNet.SignalR.Core.2.4.0

    //var jsondata = JsonConvert.SerializeObject(item.ToList()); // Clients.All.getOnlineUserlist(jsondata);// 调用客户端的getOnlineUserlist来获得在线人们 } /// /// 发送消息 /// /// 发送给用户...

    Android运用BroadcastReceiver实现强制下线

    在BaseActivity类中,我们调用了ActivityCollector类的addActivity()和removeActivity()方法,这样其他类继承BaseActivity类的时候就会自动重写这两个方法。 ```java public class BaseActivity extends Activity {...

    ZendFramework中文文档

    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....

Global site tag (gtag.js) - Google Analytics