对比list对象集合,需要重写equals和hashcode方法,如果为基本类型集合,则不需要
我这里通过判断以下7个字段是否相同来判断对象是否一致 @Override public boolean equals(Object obj) { if(obj == this) {return true;} if (!(obj instanceof Resource)) { return false;} Resource re = (Resource) obj; return resourceName.equals(re.resourceName)&& resourceType==re.getResourceType()&& resourceUrl.equals(re.getResourceUrl())&& permission.equals(re.getPermission())&& parentPermission.equals(re.getParentPermission())&& isDelete==re.getIsDelete()&& showOrder==re.getShowOrder() ; } @Override public int hashCode() { return Objects.hash(resourceName, resourceType, resourceUrl,permission,parentPermission,isDelete,showOrder); }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
//比较两个list //取出存在menuOneList中,但不存在resourceList中的数据,差异数据放入differentList private void listCompare(List<Resource> menuOneList, List<Resource> resourceList) { Map<Resource,Integer> map = new HashMap<Resource,Integer>(resourceList.size()); List<Resource> differentList = new ArrayList<Resource>(); for(Resource resource : resourceList){ map.put(resource,1); } for(Resource resource1 : menuOneList){ if(map.get(resource1)==null){ differentList.add(resource1); } } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15