业务场景:根据用户查询权限,入参:UserCode,lastQueryTime(上次查询时间),出参:权限变化的列表。
oldList(上次查询到的权限列表),currList(当前查询到的权限列表),比对两个list找出:移除和增加的权限加以标识(1--增加,-1--删除)返回。
原逻辑处理方法:循环currList,如果oldList中不包含即为增加的权限列表,反之,循环oldList,如果currList中不包含即为移除的权限列表,代码如下(简略写没运行,比较笨拙):
//之前写的已经删了手动打下(add处有问题应该用map,将就着看吧)
List<String> removeList =new ArrayList<String>();
List<String> addList =new ArrayList<String>();
for(String old:currList){
if(!currList.contains(old)){
removeList.add(old,"-1")
}
}
for(String curr:oldList){
if(!oldList.contains(curr)){
addList.add(curr,"1")
}
}
用Java8中的 lambda表达式处理:
//AppAuths返回的变化列表
// 移除权限:上次与当前的权限取差集 (oldAppPrivileges - currAppPrivileges)
L