java判断两个list是否有交集_java判断两集合是否相同以及求取交集,并集,差集...

private Map> getCategoryApiId(Set oldAuthSet , SetnewAuthSet){

Map> categoryApiId = newHashMap();if (oldAuthSet!=null&&newAuthSet!=null){//首先判断两个集合是否一致

if (oldAuthSet.size()==newAuthSet.size()){

Set tempSet = new HashSet();

tempSet.addAll(oldAuthSet);

tempSet.addAll(newAuthSet);if (tempSet.size()==oldAuthSet.size()){

categoryApiId=null;//未增加api个数

logger.info("未新增和删除api");

}else{//1:交集;2:a-b的差集;3:并集

Set apiSet1 = getApiSet(oldAuthSet, newAuthSet, 1);

Set deleteAuthSet = getApiSet(oldAuthSet, apiSet1, 2);

Set insertAuthSet = getApiSet(newAuthSet,oldAuthSet , 2);//获取新增的apiId

logger.info("删除的api:"+deleteAuthSet);

logger.info("新增的api:"+insertAuthSet);

categoryApiId.put("insertApi",insertAuthSet);

categoryApiId.put("datele",deleteAuthSet);

}

}else{//1:交集;2:a-b的差集;3:b-a的差集;4:并集

Set apiSet1 = getApiSet(oldAuthSet, newAuthSet, 1);

Set deleteAuthSet = getApiSet(oldAuthSet, apiSet1, 2);//获取删除的apiId

Set insertAuthSet = getApiSet(newAuthSet, oldAuthSet, 2);//获取新增的apiId

logger.info("删除的api:"+deleteAuthSet);

logger.info("新增的api:"+insertAuthSet);

categoryApiId.put("insertApi",insertAuthSet);

categoryApiId.put("datele",deleteAuthSet);

}

}else{if (oldAuthSet==null&&newAuthSet!=null){ //全是新增api

logger.info("首次新增授权api");

categoryApiId.put("insertApi",newAuthSet);

}else if (oldAuthSet!=null&&newAuthSet==null){ //未修改用户授权api的数据

logger.info("未增加新授权的api");

categoryApiId.put("datele",oldAuthSet);

}else if (oldAuthSet==null&&newAuthSet==null){

logger.info("已授权api和新增授权api都为空");

categoryApiId=null;

}

}returncategoryApiId;

}private Set getApiSet(Set oldAuthSet, Set newAuthSet,intflag) {

Set result = new HashSet();if(flag==1){ //求交集

result.clear();

result.addAll(oldAuthSet);

result.retainAll(newAuthSet);

}else if(flag==2){ //求差集

result.clear();

result.addAll(oldAuthSet);

result.removeAll(newAuthSet);

}else if (flag==3){ //求并集

result.clear();

result.addAll(oldAuthSet);

result.addAll(newAuthSet);

}returnresult;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值