成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Java比較兩個對象中全部屬性值是否相等的方法

瀏覽:101日期:2023-02-14 08:26:41

例如下述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 { /** * 比較兩個實體屬性值,返回一個boolean,true則表時兩個對象中的屬性值無差異 * @param oldObject 進行屬性比較的對象1 * @param newObject 進行屬性比較的對象2 * @return 屬性差異比較結果boolean */ 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; } } /** * 比較兩個實體屬性值,返回一個map以有差異的屬性名為key,value為一個Map分別存oldObject,newObject此屬性名的值 * @param oldObject 進行屬性比較的對象1 * @param newObject 進行屬性比較的對象2 * @return 屬性差異比較結果map */ @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比較兩個對象中全部屬性值是否相等的方法的文章就介紹到這了,更多相關Java比較對象屬性值內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
久久精品午夜| 日本不卡不码高清免费观看| 日韩中文字幕91| 国产欧美短视频| 中文字幕一区二区三区在线播放| 99久免费精品视频在线观看| 欧美一区二区三区电影| 精品一区二区三区香蕉蜜桃| 在线中文字幕一区| 亚洲成av人片一区二区| 亚洲专区免费| 亚洲一区二区黄色| 久久精品一区| 欧美日韩欧美一区二区| 久久66热偷产精品| 精品视频999| 国产真实乱子伦精品视频| 欧洲av一区二区嗯嗯嗯啊| 蜜臀av亚洲一区中文字幕| 色久优优欧美色久优优| 六月婷婷色综合| 欧美性极品少妇| 九九九久久久精品| 欧美日韩国产一二三| 久久99国产精品尤物| 欧美日韩另类一区| 国产一区二区精品久久91| 91精品国产欧美一区二区成人| 国产精品一区二区久久精品爱涩 | 日韩精品午夜视频| 巨乳诱惑日韩免费av| 免费观看一级欧美片| 欧美亚洲动漫制服丝袜| 免费日韩av片| 老司机免费视频一区二区| 91麻豆精品国产91| 成人网在线免费视频| 国产视频一区二区在线| 亚洲国产三级| 日韩av午夜在线观看| 7878成人国产在线观看| av福利精品导航| 亚洲欧洲精品一区二区三区| 国产视频一区在线观看一区免费| 天堂一区二区在线免费观看| 欧美片网站yy| a级高清视频欧美日韩| 国产精品天美传媒| 国产日韩欧美| 久久www免费人成看片高清| 日韩精品一区二区三区蜜臀| 欧美不卡一卡二卡免费版| 中文字幕一区av| 久久精品123| 国产伦理精品不卡| 国产女人aaa级久久久级| 日韩一级精品| 精品一区二区三区在线播放视频| 精品国产自在久精品国产| 亚洲小说欧美另类社区| 日本在线不卡视频一二三区| 精品蜜桃在线看| 亚洲高清视频在线观看| 日本午夜精品视频在线观看| 日韩欧美中文一区| 一本大道av伊人久久综合| 国产在线麻豆精品观看| 久久夜色精品国产欧美乱极品| 伊人精品在线| 日本不卡一区二区三区| 精品国产髙清在线看国产毛片| 精品动漫av| 免费观看成人av| 欧美mv和日韩mv的网站| 在线精品福利| 久久精品国产精品亚洲综合| 久久久久国产成人精品亚洲午夜 | 精品国产免费人成电影在线观看四季 | 男女男精品网站| 精品国产人成亚洲区| 国产私拍一区| 高清视频一区二区| 亚洲精品ww久久久久久p站| 在线不卡免费av| 亚洲精品女人| 国产 欧美在线| 亚洲最大的成人av| 日韩欧美中文一区二区| 国产日韩一区| av不卡免费电影| 三级久久三级久久| 国产欧美精品一区二区三区四区 | 日韩av一二三| 欧美国产日韩一二三区| 欧美性淫爽ww久久久久无| 午夜视频久久久| 捆绑调教美女网站视频一区| 国产女人aaa级久久久级| 日本高清成人免费播放| 欧美日韩大片一区二区三区 | 韩日在线一区| 极品美女销魂一区二区三区免费| 国产欧美一区二区三区鸳鸯浴| 色域天天综合网| 欧美一区视频| 激情综合色播激情啊| 亚洲精品中文在线影院| 精品久久久久久久久久久久久久久久久| 国产精品综合色区在线观看| 成人app在线| 麻豆精品在线观看| 亚洲特黄一级片| 精品免费国产一区二区三区四区| 久久综合九色综合久99| 色综合久久综合网| 久久国产精品免费| 一区二区免费在线播放| 久久久久久免费毛片精品| 欧美日韩一区二区欧美激情| 一区二区高清视频| 91在线精品一区二区三区| 极品少妇xxxx精品少妇| 亚洲成人av在线电影| 亚洲欧美在线视频观看| 精品乱人伦小说| 欧美精品色一区二区三区| 国产精品久久久久毛片大屁完整版| av不卡在线观看| 国产精品夜夜嗨| 免费看黄色91| 一区二区三区视频在线观看 | 韩国精品一区二区| 亚洲第一精品在线| 中文字幕欧美区| 精品国产网站在线观看| 在线观看三级视频欧美| 国产一区白浆| 亚洲国产免费| 欧美fxxxxxx另类| 不卡视频在线看| 国产精品911| 激情亚洲综合在线| 日本va欧美va瓶| 午夜久久久久久电影| 国产精品国产精品国产专区不蜜 | 亚洲综合男人的天堂| 国产精品毛片a∨一区二区三区| 精品1区2区在线观看| 欧美一区二区三区免费观看视频| 欧美视频一区二| 在线观看日韩精品| 久久亚洲一区| 午夜在线精品偷拍| 国产精品久久久久9999高清| 影音先锋在线一区| 亚洲午夜电影| 国内成+人亚洲| 国产精品国色综合久久| 农村妇女精品| 91麻豆国产精品久久| 91在线观看免费视频| 99天天综合性| 91麻豆国产自产在线观看| 91在线观看一区二区| 91麻豆文化传媒在线观看| 91色视频在线| 欧美黄污视频| 欧美亚洲不卡| 一区二区自拍| 一级成人国产| 六月婷婷一区| 色一情一伦一子一伦一区| 日本韩国一区二区三区| 欧美怡红院视频| 欧美三区在线观看| 777久久久精品| 日韩免费成人网| 日韩精品中文字幕一区| 精品剧情在线观看| 国产三级精品视频| 中文字幕亚洲精品在线观看 | 成人国产精品免费观看动漫| 成人美女在线视频| 99综合影院在线| 欧美日韩国产一区精品一区| 欧美午夜久久| 亚洲日本视频| 蜜桃av久久久亚洲精品| 一本色道久久综合亚洲91| 91福利精品视频| 欧美美女bb生活片| 春色校园综合激情亚洲| 94-欧美-setu| 尹人成人综合网| 久久国产精品一区二区三区四区| 中文久久精品| 欧美亚一区二区| 日韩一区二区三区视频在线 | 韩日欧美一区二区三区| 国产成人免费视频网站|