欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

java字符串差异比较工具类

实际场景:

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

本文地址:https://blog.csdn.net/ITBigGod/article/details/107685427

相关标签: web开发工具类