java 实体比较_java比较实体类
展开全部
这种情况你可以使用反射去写一个通用的方法,不过前提是你的32313133353236313431303231363533e4b893e5b19e31333363393664那些实体类都是简单的包装类,稍后奉上代码。代码如下:package pojo;
/**
* Created by liaokai on 2017/11/17 0017.
*/
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
if (age != person.age) return false;
return name != null ? name.equals(person.name) : person.name == null;
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + age;
return result;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
package util;
import pojo.Person;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by liaokai on 2017/11/17 0017.
*/
public class CompareUtil {
public List compareT(T t1,T t2,String className){
List list = new ArrayList();
//内容没改变直接返回
if(t1.equals(t2)){
return list;
}
try {
Class c = Class.forName(className);
//读取t1和t2中的所有属性
Field[] fields = c.getDeclaredFields();
for (int i = 0; i
Field field =fields[i];
field.setAccessible(true);
Object value1=field.get(t1);
Object value2=field.get(t2);
//判断这两个值是否相等
if(!isValueEquals(value1,value2)){
Map map = new HashMap();
map.put("name",field.getName());
map.put("before",value1);
map.put("after",value2);
list.add(map);
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return list;
}
private boolean isValueEquals(Object value1, Object value2) {
if(value1==null&&value2==null){
return true;
}
if(value1==null&&value2!=null){
return false;
}
if(value1.equals(value2)){
return true;
}
return false;
}
}
package pojo;
import util.CompareUtil;
/**
* Created by liaokai on 2017/11/17 0017.
*/
public class Test {
public static void main(String[] args) {
Person p1 = new Person("张三",14);
Person p2 = new Person("张三",15);
Person p3 = new Person("李四",15);
CompareUtil compareUtil = new CompareUtil();
System.out.println(compareUtil.compareT(p1,p1,Person.class.getName()));
System.out.println(compareUtil.compareT(p1,p2,Person.class.getName()));
System.out.println(compareUtil.compareT(p1,p3,Person.class.getName()));
System.out.println(compareUtil.compareT(p2,p3,Person.class.getName()));
}
}
//运行结果
[]
[{before=14, name=age, after=15}]
[{before=张三, name=name, after=李四}, {before=14, name=age, after=15}]
[{before=张三, name=name, after=李四}]
java 实体比较_java比较实体类相关推荐
- java 匿名类型_Java之匿名类讲解
匿名类,正如名字一样在java中没有名字标识的类,当然了编译后还是会安排一个名字的. 下面是一个关于匿名类的简单例子: public classClient {public static voidma ...
- java载入器材_JAVA之了解类载入器Classloader
1.类的载入.连接和初始化 类初始化通常包含载入.连接.初始化三个步骤. (1)进程的结束 每当执行一个java程序时,将会启动一个java虚拟机进程,无论程序多么复杂.有多少线程.都在这个java虚 ...
- java zipfile用法_Java使用ZipFile类实现Zip文件解压
java.util.zip.ZipFile类用于从 ZIP 文件读取条目. 即从给定的ZIP压缩文件中获取所有文件的信息,如:文件的名称.是否为目录等信息.可以使用这个类来实现将zip文件进行解压操作 ...
- java异常 子类_Java异常 Exception类及其子类(实例讲解)
C语言时用if...else...来控制异常,Java语言所有的异常都可以用一个类来表示,不同类型的异常对应不同的子类异常,每个异常都对应一个异常类的对象. Java异常处理通过5个关键字try.ca ...
- java bigdecimal赋值_Java中BigDecimal类介绍及用法(亲测)
Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是 ...
- java file构造方法_Java中FileOutputStream类的常用方法
今天动力节点java学院小编将为大家分享Java中FileOutputStream类的常用方法,希望通过此文能够帮助到大家,下面就随小编一起看看Java中FileOutputStream类的常用方法都 ...
- java text 格式化_java.text.DecimalFormat类十进制格式化
java.text.DecimalFormat类十进制格式化的具体代码,供大家参考,具体内容如下 import java.text.DecimalFormat; class FormatDemo{ p ...
- java 下载工具_java文件下载工具类
java文件工具类是java开发爱好者提供的一个java开源包,让广大java爱好者以及开发者可以直接编译形成class文件进行使用.内容包含io流,图形界面,使用户更好更快的找到相对应文件,并进行相 ...
- java math 函数_Java中Math类常用函数总结
Java中比较常用的几个数学公式的总结: //取整,返回小于目标函数的最大整数,如下将会返回-2 Math.floor(-1.8): //取整,返回发育目标数的最小整数 Math.ceil() //四 ...
最新文章
- java 详解 搭建 框架_maven 基本框架搭建详解
- python3 识别图片文字
- 玩转Linux压缩及归档
- Netty--ByteBuf
- 怎样检测mysql5.5安装成功_64位wiN7系统中装配MySQL5.5.17(测试安装成功哦!)
- Oracle10g数据库的完全卸载:
- 用户控件(UserControl)
- CSS命名与书写规范
- VS编程之查看数组信息
- 计算机无法用u盘重装系统,最简单不用U盘电脑重装系统教程
- linux光盘引导项,Linux制作grub引导光盘
- 有了这些好看的流程图模板,你也可以画出漂亮的流程图
- 小程序修改weiui-uploadimg的+号图标为自定义图片
- 无法引用Microsoft.Office.Interop.Excel的解决
- 海量上传文件服务器端,bat批量上传ftp文件到服务器
- luogu P4694 [PA2013]Raper
- Java设计登录界面——GUI
- 单细胞论文记录(part9)--Spatial charting of single-cell transcriptomes in tissues
- 计算机网络知识全面讲解:域名解析的过程
- 2022年程序员日记