1. 程式人生 > 實用技巧 >快速對比兩個物件中屬性是否相同,哪些屬性不同?

快速對比兩個物件中屬性是否相同,哪些屬性不同?

在工作中遇到一個需求,要識別一個數據前後的資料變更項有哪些,返回這個集合給另外一個系統用來更新資料。
核心思路有兩步:

  1. 使用工具類將物件轉map
  2. 通過keyset或者entryset遍歷,分別取新舊物件該屬性的值,如果不同則存進集合中

domain
public class User{ private String name; private String age; private String address; }

service
private List<String> dealDiff(User userNew, User userOld) { List<String> resultList = new ArrayList<>(); Map<String, Object> userNewMap = BeanUtils.beanToMap(userNew); Map<String, Object> userOldMap = BeanUtils.beanToMap(userOld); for (String key : userNewMap .keySet()) { if (!(ObjectUtils.isEmpty(userNewMap .get(key)) ? userNewMap .get(key) == userOldMap .get(key) : userNewMap .get(key).equals(userOldMap .get(key)){ resultList.add(key); } } return resultList; }