欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

java 使用流功能将 List 转换为 List

最编程 2024-06-29 08:24:44
...

转换流程如下:
一、需要一个MapToObject工具类

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Date;
import java.util.Map;

/**
 * @author: Combo
 * @time: 2020/5/22 18:40
 * @description: 转换类
 */
public class MapToObject {
    public static <T> T map2Object(Map<String, Object> map, Class<T> clazz) {
        if (map == null) {
            return null;
        }
        T obj = null;
        try {
            obj = clazz.newInstance();

            Field[] fields = obj.getClass().getDeclaredFields();
            for (Field field : fields) {
                int mod = field.getModifiers();
                if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
                    continue;
                }
                field.setAccessible(true);
                String filedTypeName = field.getType().getName();
                if (filedTypeName.equalsIgnoreCase("java.util.date")) {
                    String datetimestamp = String.valueOf(map.get(field.getName()));
                    if (datetimestamp.equalsIgnoreCase("null")) {
                        field.set(obj, null);
                    } else {
                        field.set(obj, new Date(Long.parseLong(datetimestamp)));
                    }
                } else {
                    field.set(obj, map.get(field.getName()));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return obj;
    }
}

二、使用流特性将List<Map>转成List<Bean>

// 实体类
User user = new User();
// 得到的list<map>的值
List<Map> mapList = new ArrayList<>(); 
// 利用流 将List<map> 转成 List<实体类>
List<User> userList = mapList.stream().map(item -> MapToObject.map2Object(item, User.class)).collect(Collectors.toList());

推荐阅读