前言
我想要的效果: 我有俩个不同对象的集合,他们中间有部分一致的字段,我想把这俩个集合中相同的字段复制到一个集合中。
BeanUtils.copyProperties() 作为浅拷贝并不能达到我想要的效果,看了很多篇文章,都比较麻烦。
需要对一个集合进行复制的时候,两个集合又是不同的对象,我的目的是把两个集合对象,字段一致的复制到一起。
代码
/**
* 调用效果
* orderItemList : 被复制的集合,对象类型是 OrderItem.class
* CurrentOrderResp: 当前集合,对象类型是 CurrentOrder.class
*/
List<OrderItem> orderItemList = new ArrayList<>();
List<CurrentOrderResp> currentOrderRespList = CollectionExtUtils.convertTarget(orderItemList, CurrentOrderResp.class);
/**
* 工具类
*/
public class CollectionExtUtils extends CollectionUtils {
public static <T> List<T> convertTarget(List sourceList, Class<T> targetClass) {
ArrayList targetList = new ArrayList();
try {
Iterator values= sourceList.iterator();
while(values.hasNext()) {
Object source = values.next();
T target = targetClass.newInstance();
BeanUtils.copyProperties(source, target);
targetList.add(target);
}
} catch (Exception e) {
log.error(">>>>>>复制异常<<<<<<", e);
}
return targetList;
}
放心用吧