Home > Java > javaTutorial > How to compare two object field values ​​in Java to see if they are the same

How to compare two object field values ​​in Java to see if they are the same

PHPz
Release: 2023-04-28 22:43:09
forward
2039 people have browsed it

Tools

package com.shucha.deveiface.biz.utils;
 
/**
 * @author tqf
 * @Description
 * @Version 1.0
 * @since 2022-03-21 16:50
 */
 
import com.shucha.deveiface.biz.model.Comparison;
 
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
 
public class CompareObjUtil {
 
    public static List<Comparison> compareObj(Object beforeObj, Object afterObj) throws Exception{
        List<Comparison> diffs = new ArrayList<>();
 
        if(beforeObj == null) {
            throw new RuntimeException("原对象不能为空");
        }
        if(afterObj == null) {
            throw new RuntimeException("新对象不能为空");
        }
        if(!beforeObj.getClass().isAssignableFrom(afterObj.getClass())){
            throw new RuntimeException("两个对象不相同,无法比较");
        }
 
        //取出属性
        Field[] beforeFields = beforeObj.getClass().getDeclaredFields();
        Field[] afterFields = afterObj.getClass().getDeclaredFields();
        Field.setAccessible(beforeFields, true);
        Field.setAccessible(afterFields, true);
 
        //遍历取出差异值
        if(beforeFields != null && beforeFields.length > 0){
            for(int i=0; i<beforeFields.length; i++){
                Object beforeValue = beforeFields[i].get(beforeObj);
                Object afterValue = afterFields[i].get(afterObj);
                if((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null)){
                    Comparison comparison = new Comparison();
                    comparison.setField(beforeFields[i].getName());
                    comparison.setBefore(beforeValue);
                    comparison.setAfter(afterValue);
                    comparison.setIsUpdate(true);
                    diffs.add(comparison);
                }
            }
        }
 
        return diffs;
    }
}
 public static void main(String[] args) throws Exception {
        ApIData apIData = new ApIData()
                .setName("张三")
                .setMonth("5")
                .setHh("1");
        ApIData apIData1 = new ApIData()
                .setName("张三")
                .setMonth("9")
                .setHh("35");
        List<Comparison> list = CompareObjUtil.compareObj(apIData, apIData1);
        System.out.println(list);
    }
Copy after login
package com.shucha.deveiface.biz.model;
 
import lombok.Data;
import lombok.experimental.Accessors;
 
/**
 * @author tqf
 * @Description  接口请求参数类
 * @Version 1.0
 * @since 2020-08-03 20:06
 */
@Data
@Accessors(chain = true) //注解用来配置lombok如何产生和显示getters和setters的方法
public class ApIData {
 
    /**
     * 身份证号
     */
    private String ident_card;
 
    /**
     * 姓名
     */
    private String name;
 
    /**
     * 户号  水务局使用查询
     */
    private String hh;
 
    /**
     * 用水月份  YYYY-MM
     */
    private String month;
 
    /**
     * 房东用户ID
     */
    private String owner_id;
 
    /**
     * 所属街道
     */
    private String street_name;

}
Copy after login

The above is the detailed content of How to compare two object field values ​​in Java to see if they are the same. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template