天天看點

java list 對象複制_Java之兩個不同對象的List copy相同的屬性

業務中遇到,使用Mybatis generator從資料庫查詢結果封裝的實體類,該實體類是和資料庫字段一一對應的,但是不想把該實體類的所有屬性都傳回給前端,于是建立一個實體類,其中隻有前端需要的屬性,然後想把List中的對象全部拷貝到List中,其中UserA屬性多,UserB屬性少,字段名是一樣的。

方法1:使用Spring的BeanUtils.copyProperties()或者PropertyUtils.copyProperties()

将List1循環,将UserA中需要的屬性Set到UserB中。這個方法略麻煩,因為還需要循環,并且建立新對象。

方法2:借助FastJson的Json和對象轉換的功能

具體實作就是,将對象(或者List)轉換為json,然後再将json資訊轉換為指定的對象(或者指定對象的List),具體代碼貼在下面:

public static List copy(List> list,Class clazz){

String oldOb = JSON.toJSONString(list);

return JSON.parseArray(oldOb, clazz);

}

public static T copy(Object ob,Class clazz){

String oldOb = JSON.toJSONString(ob);

return JSON.parseObject(oldOb, clazz);

}