java字符串差异比较工具类

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
     */
    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);
    }
}

java字符串差异比较工具类_第1张图片

实际场景:

比如这种授权,树形操作。
要把授权的记录保存或者是更新权限表,都可以使用。
java字符串差异比较工具类_第2张图片

你可能感兴趣的:(web开发工具类)