概述
/**
* 比较更新组织枚举
*
*<hr>
* @author hanjidong
* @date 2020年11月8日 下午12:46:23
* @since 0.0.1
* @param originList
* @param orgExtends
* void
*/
private void updateList(List<SeReqOrgAttrExtend> originList, List<SeReqOrgAttrExtend> orgExtends) {
//批量更新list
List<SeReqOrgAttrExtend> batchUpdateList = new ArrayList<SeReqOrgAttrExtend>();
//批量删除list
List<SeReqOrgAttrExtend> batchDeleteList = new ArrayList<SeReqOrgAttrExtend>();
//批量添加list
List<SeReqOrgAttrExtend> batchAddList = new ArrayList<SeReqOrgAttrExtend>();
//如果数据库中旧值为空则全部为添加操作
if(ValidateUtil.isEmpty(originList)){
batchAddList.addAll(orgExtends);
batchAdd(batchAddList);
return ;
}
//如果新值为空则全部为删除
if(ValidateUtil.isEmpty(orgExtends)){
batchDeleteList.addAll(orgExtends);
batchDelete(batchDeleteList);
return ;
}
//新的枚举值map 隐含去重
Map<Long,SeReqOrgAttrExtend> newMap = new HashMap<>();
for (SeReqOrgAttrExtend seReqOrgAttrExtend : orgExtends) {
newMap.put(seReqOrgAttrExtend.getId(),seReqOrgAttrExtend);
}
//反向遍里旧的list
for (int i= originList.size() -1 ; i>=0 ; i--) {
SeReqOrgAttrExtend seReqOrgAttrExtend = originList.get(i);
//如果旧的集合中的值在新的map中出现 更新操作
if(newMap.get(seReqOrgAttrExtend.getId()) != null){
if(batchUpdateList.contains(seReqOrgAttrExtend)){
batchUpdateList.add(seReqOrgAttrExtend);
//移除当前操作对象
originList.remove(i);
}
}
//旧的值在新的集合中没有执行删除操作
if(newMap.get(seReqOrgAttrExtend.getId()) == null){
batchDeleteList.add(seReqOrgAttrExtend);
//移除当前操作对象
originList.remove(i);
}
}
batchAddList= originList;
if(ValidateUtil.isNotEmpty(batchAddList)){
batchAdd(batchAddList);
}
if(ValidateUtil.isNotEmpty(batchDeleteList)){
batchDelete(batchDeleteList);
}
if(ValidateUtil.isNotEmpty(batchUpdateList)){
batchUpdate(batchUpdateList);
}
}
最后
以上就是负责跳跳糖为你收集整理的list集合比较批量更新的全部内容,希望文章能够帮你解决list集合比较批量更新所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复