java字符串差异比较工具类
程序员文章站
2022-07-05 21:54:11
java字符串差异比较工具类场景比如说,前后授权对比,两个字符串的差异对比,比较前后两次字段的差异情况等等场景。工具类工具类源码:package com.bonc.modules.sys.controller;import com.bonc.modules.sys.entity.SysUserTenant;import org.jeecg.common.util.oConvertUtils;import java.util.*;/** * 两个字符串的内容差异对比 * * @A...
java字符串差异比较工具类
场景
比如说,前后授权对比,两个字符串的差异对比,比较前后两次字段的差异情况等等场景。
工具类
工具类源码:
package com.bonc.modules.sys.controller;
import com.bonc.modules.sys.entity.SysUserTenant;
import org.jeecg.common.util.oConvertUtils;
import java.util.*;
/**
* 两个字符串的内容差异对比
*
* @Author: Zoutao
* @Date: 2020/7/30
*/
public class DiffUtils {
/**
* (A,B),从B中找出A中没有的元素
* 从diff中找出main中没有的元素
* @param main,数据之间以,号隔开
* @param diff,数据之间以,号隔开
* @return List<String>
*/
public static List<String> getDiff(String main, String diff){
if(oConvertUtils.isEmpty(diff)) {
return null;
}
if(oConvertUtils.isEmpty(main)) {
return Arrays.asList(diff.split(","));
}
String[] mainArr = main.split(",");
String[] diffArr = diff.split(",");
Map<String, Integer> map = new HashMap<>();
for (String string : mainArr) {
map.put(string, 1);
}
List<String> res = new ArrayList<String>();
for (String key : diffArr) {
if(oConvertUtils.isNotEmpty(key) && !map.containsKey(key)) {
res.add(key);
}
}
return res;
}
public static void main(String[] args) {
String lastTenantIds = "1,2,3";
String tenantIds = "2,3,5,8";
// 批量插入新授权,移除的旧授权
List<String> addList = getDiff(lastTenantIds,tenantIds);//(A,B),从B中找出A中没有的元素
if(addList!=null && addList.size()>0) {
List<SysUserTenant> list = new ArrayList<SysUserTenant>();
for (String p : addList) {
if(oConvertUtils.isNotEmpty(p)) {
SysUserTenant rolepms = new SysUserTenant();
//p.setxxxx(p.getxxx());
list.add(rolepms);
}
}
System.out.println(addList);
// xxxservice.saveBatch(list); //新增操作
}
List<String> delList = getDiff(tenantIds,lastTenantIds);//(B,A),从A中找出B中没有的元素
// xxxservice.delBatch(list); //删除操作
System.out.println(delList);
}
}
实际场景:
比如这种授权,树形操作。
要把授权的记录保存或者是更新权限表,都可以使用。
本文地址:https://blog.csdn.net/ITBigGod/article/details/107685427