返回顶部
首页 > 资讯 > 精选 >怎么用Java比较两个对象中全部属性值是否相等
  • 885
分享到

怎么用Java比较两个对象中全部属性值是否相等

2023-06-20 20:06:30 885人浏览 安东尼
摘要

本篇内容介绍了“怎么用Java比较两个对象中全部属性值是否相等”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!例如下述Java类:import

本篇内容介绍了“怎么用Java比较两个对象中全部属性值是否相等”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

例如下述Java类:

import java.io.Serializable;import java.util.List;public class Bean_Topology implements Serializable { private static final long serialVersionUID = 1L; public static long getSerialversionuid() {  return serialVersionUID; } private Long topology_pk; private String topology_id; public String getTopology_id() {  return topology_id; } public void setTopology_id(String topology_id) {  this.topology_id = topology_id; } public Long getTopology_pk() {  return topology_pk; } public void setTopology_pk(Long topology_pk) {  this.topology_pk = topology_pk; } @Override public String toString() {  return "当前拓扑的PK为:" + topology_pk + ",ID为:" + topology_id; }}

如下想判断下面两个对象中全部属性值是否一致时,有哪些办法呢?

Bean_Topology topology1 = new Bean_Topology(); topology1.setTopology_id("1");Bean_Topology topology2 = new Bean_Topology(); topology2.setTopology_pk(1L); topology2.setTopology_id("1");

方法一:重写Bean_Topology的equals方法和hashcode方法,代码如下:

@Overridepublic boolean equals(Object obj) {    if (this == obj) {        return true;    }      if (obj == null || getClass() != obj.getClass()) {        return false;     }    Bean_Topology topology = (Bean_Topology) obj;    if (topology_pk == null) {        if (topology.topology_pk != null) {            return false;        }     }else if (!topology_pk.equals(topology.topology_pk)) {        return false;     }            if (topology_id == null) {        if (topology.topology_id != null) {            return false;        }     }else if (!topology_id.equals(topology.topology_id)) {        return false;     }                return true;    }     @Override    public int hashCode() {        return  topology_pk.hashCode()+topology_id.hashCode();    }

测试代码如下:

if(topology1.equals(topology2)) { System.out.println("对象1与对象2的属性值无差异。");}else { System.out.println("对象1与对象2的属性值有差异。"); }

输出结果为:

对象1与对象2的属性值有差异。

方法二:调用文章末尾的工具类,代码如下:

Map<String, Map<String,Object>> resultMap=compareFields(topology1,topology2);int size=resultMap.size();if(size>0) {    System.out.println("对象1与对象2的属性值有差异,差异结果如下:");      Iterator<String> it = resultMap.keySet().iterator();    while(it.hasNext()) {        String key=it.next();        System.out.println("  "+key+"(oldValue:"+resultMap.get(key).get("oldValue")+",newValue:"+resultMap.get(key).get("newValue")+")");        } }else { System.out.println("对象1与对象2的属性值无差异!");}

输出结果为:

对象1与对象2的属性值有差异,差异结果如下:
  topology_pk(oldValue:null,newValue:1)

工具类如下:

package com.sitech.modual.util.compare;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Method;import java.sql.Timestamp;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import com.sitech.modual.bean.Bean_Link;import com.sitech.modual.bean.Bean_Topology;public class ClassCompareUtil {  public static boolean compareObject(Object oldObject, Object newObject) {  Map<String, Map<String,Object>> resultMap=compareFields(oldObject,newObject);    if(resultMap.size()>0) {   return false;  }else {   return true;  } }   @SuppressWarnings("rawtypes") public static Map<String, Map<String,Object>> compareFields(Object oldObject, Object newObject) {  Map<String, Map<String, Object>> map = null;    try{       if (oldObject.getClass() == newObject.getClass()) {    map = new HashMap<String, Map<String,Object>>();        Class clazz = oldObject.getClass();    //获取object的所有属性    PropertyDescriptor[] pds = Introspector.getBeanInfo(clazz,Object.class).getPropertyDescriptors();        for (PropertyDescriptor pd : pds) {     //遍历获取属性名     String name = pd.getName();          //获取属性的get方法     Method readMethod = pd.getReadMethod();          // 在oldObject上调用get方法等同于获得oldObject的属性值     Object oldValue = readMethod.invoke(oldObject);     // 在newObject上调用get方法等同于获得newObject的属性值     Object newValue = readMethod.invoke(newObject);          if(oldValue instanceof List){      continue;     }          if(newValue instanceof List){      continue;     }          if(oldValue instanceof Timestamp){      oldValue = new Date(((Timestamp) oldValue).getTime());     }          if(newValue instanceof Timestamp){      newValue = new Date(((Timestamp) newValue).getTime());     }          if(oldValue == null && newValue == null){      continue;     }else if(oldValue == null && newValue != null){      Map<String,Object> valueMap = new HashMap<String,Object>();       valueMap.put("oldValue",oldValue);       valueMap.put("newValue",newValue);            map.put(name, valueMap);            continue;     }          if (!oldValue.equals(newValue)) {// 比较这两个值是否相等,不等就可以放入map了      Map<String,Object> valueMap = new HashMap<String,Object>();       valueMap.put("oldValue",oldValue);       valueMap.put("newValue",newValue);            map.put(name, valueMap);     }    }   }  }catch(Exception e){   e.printStackTrace();  }    return map; }}

注意:本工具类不适用于比较包含List,Map等类的Class。

“怎么用Java比较两个对象中全部属性值是否相等”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 怎么用Java比较两个对象中全部属性值是否相等

本文链接: https://lsjlt.com/news/299885.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么用Java比较两个对象中全部属性值是否相等
    本篇内容介绍了“怎么用Java比较两个对象中全部属性值是否相等”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!例如下述Java类:import...
    99+
    2023-06-20
  • Java比较两个对象中全部属性值是否相等的方法
    例如下述Java类: import java.io.Serializable; import java.util.List; public class Bean_Topolog...
    99+
    2024-04-02
  • java如何比较两个对象是否相等
    在Java中,可以使用equals()方法来比较两个对象是否相等。该方法是Object类的一个方法,所有的类都继承自Object类。...
    99+
    2023-10-24
    java
  • Java中怎么用bigdecimal比较两个值是否相等
    在Java中,使用BigDecimal比较两个值是否相等可以使用compareTo方法或者equals方法。 使用compareT...
    99+
    2024-03-07
    Java
  • java怎么比较对象是否相等
    在Java中,可以使用以下几种方法来比较对象是否相等: 使用`==`运算符:`==`运算符用于比较两个对象的引用是否相等,即是否...
    99+
    2023-10-28
    java
  • Golang怎么比较两个slice是否相等
    本篇内容介绍了“Golang怎么比较两个slice是否相等”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、为什么在Golang中无法直接使...
    99+
    2023-07-05
  • Java中2个对象字段值怎么比较是否相同
    这篇文章主要介绍了Java中2个对象字段值怎么比较是否相同的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中2个对象字段值怎么比较是否相同文章都会有所收获,下面我们一起来看看吧。工具类package&nb...
    99+
    2023-06-30
  • Java中2个对象字段值比较是否相同
    1、工具类 package com.shucha.deveiface.biz.utils; import com.shucha.deveiface.biz.model.Co...
    99+
    2024-04-02
  • java怎么判断两个对象是否相等
    java中可以使用equals()方法判断两个对象是否相等,equals() 方法用于将字符串与指定的对象比较。如果给定对象与字符串相等,则返回 true;否则返回 false。该方法的源码如下:public boolean equals(...
    99+
    2015-04-07
    java
  • php怎么比较两个数组是否相等
    这篇“php怎么比较两个数组是否相等”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php怎么比较两个数组是否相等”文章吧。比...
    99+
    2023-06-30
  • java如何判断两个对象的值是否相等
    在Java中,要判断两个对象的值是否相等,需要使用对象的equals()方法。equals()方法是Object类的方法,所有的Ja...
    99+
    2023-08-16
    java
  • 利用java怎么对两个对象的属性进行比较
    利用java怎么对两个对象的属性进行比较?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。两个对象进行比较相等,有两种做法:1、情况一:当仅仅只是判断两个对象是否相...
    99+
    2023-05-31
    java ava
  • 在Java中怎么判断两个Long对象是否相等
    这篇文章主要介绍“在Java中怎么判断两个Long对象是否相等”,在日常操作中,相信很多人在在Java中怎么判断两个Long对象是否相等问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”在Java中怎么判断两个L...
    99+
    2023-06-20
  • 在Java中判断两个Long对象是否相等
    抛出问题: Long a = 4l; Long b = 4l; a == b //true Long a = 128l; Long b = 128l; a == b //f...
    99+
    2024-04-02
  • js如何比较两个单独的数组或对象是否相等
    这篇文章主要介绍js如何比较两个单独的数组或对象是否相等,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!所谓js的中的传值,其实也就是说5种基本数据类型(null,undefind,b...
    99+
    2024-04-02
  • 怎么用go语言比较两个对象是否深度相同
    这篇文章主要介绍“怎么用go语言比较两个对象是否深度相同”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用go语言比较两个对象是否深度相同”文章能帮助大家解决问题。前言:func Dee...
    99+
    2023-06-30
  • Java怎么比较两个对象并获取不相等的字段
    这篇文章主要介绍“Java怎么比较两个对象并获取不相等的字段”,在日常操作中,相信很多人在Java怎么比较两个对象并获取不相等的字段问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java怎么比较两个对象并获取...
    99+
    2023-06-21
  • 在Java中怎么比较两个对象
    这篇文章主要为大家展示了“在Java中怎么比较两个对象”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在Java中怎么比较两个对象”这篇文章吧。Common Lang 中的 Builder 包内提...
    99+
    2023-06-21
  • js中判断两个数组对象是否完全相等
    目录js判断两个数组对象是否完全相等js判断两个对象是否相等的办法,包含绝对相等和形状内容相等总结js判断两个数组对象是否完全相等 如何判断两个数组是否完全相等,如何判断两个对象是否...
    99+
    2023-05-16
    js判断数组 js判断数组对象 判断数组对象是否相等
  • c语言怎么比较两个字符串是否相等
    在C语言中,可以使用strcmp函数来比较两个字符串是否相等。strcmp函数的原型为:int strcmp(const char ...
    99+
    2023-10-10
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作