将List<Map<String,Object>>转为List<Object>

经常在开发中会需要将List<Map<String,Object>>转为List,Object也就是你自己对应的目标对象,因为经常要用,干脆就自己封装了一个,代码示例如下:

假设有一个类:Animal.java

java 复制代码
public class Animal {
    private String name;
    private int age;

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 省略getter和setter方法

    @Override
    public String toString() {
        return "Animal{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

将 List<Map<String, Object>> 转换为 List 类型。接收 Class 类型作为参数,并使用反射来创建指定类的对象:

java 复制代码
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class MapListToObjectListConverter {
    public static <T> List<T> convertList(List<Map<String, Object>> listOfMaps, Class<T> clazz) {
        List<T> resultList = new ArrayList<>();

        for (Map<String, Object> map : listOfMaps) {
            try {
                Constructor<T> constructor = clazz.getConstructor(String.class, int.class);
                String name = (String) map.get("name");
                int age = (int) map.get("age");
                T instance = constructor.newInstance(name, age);
                resultList.add(instance);
            } catch (NoSuchMethodException | InstantiationException |
                    IllegalAccessException | InvocationTargetException e) {
                e.printStackTrace();
            }
        }

        return resultList;
    }

    public static void main(String[] args) {
        // 假设这是从其他地方得到的List<Map<String, Object>>
        List<Map<String, Object>> listOfMaps = new ArrayList<>();
        Map<String, Object> map1 = Map.of("name", "Lion", "age", 5);
        Map<String, Object> map2 = Map.of("name", "Tiger", "age", 3);
        listOfMaps.add(map1);
        listOfMaps.add(map2);

        // 将List<Map<String, Object>>转换为List<Animal>
        List<Animal> animals = convertList(listOfMaps, Animal.class);

        // 输出转换后的Animal对象列表
        for (Animal animal : animals) {
            System.out.println(animal);
        }
    }
}

这里的 convertList 方法接受 List<Map<String, Object>> 和一个 Class 参数,其中 T 是你希望转换的目标类型。方法使用反射根据提供的类 clazz 创建对象,并将其添加到结果列表中。在这个例子中,我们将其用于 Animal 类型。

相关推荐
bbq粉刷匠20 分钟前
HashMap 底层原理深度拆解(二):putVal 完整链路解析(懒加载 · 链表遍历 · 尾插法)
java·开发语言·哈希算法
Sam_Deep_Thinking28 分钟前
一个靠谱的C端网关服务应该包含什么内容
java·程序员·系统架构
杨运交1 小时前
[055][调度模块]Spring动态任务调度框架的设计与实现
java·后端·spring
白狐_7981 小时前
408 数据结构算法题 01:线性表暴力求解保分指南
java·数据结构·算法
流云鹤1 小时前
03Java学习day(3)
java·学习
冻柠檬飞冰走茶1 小时前
PTA基础编程题目集 7-31 字符串循环左移(C语言实现)
c语言·开发语言·数据结构·算法
tqs_123451 小时前
Agent智能体+Skill插件引擎+Milvus混合检索 技术沉淀
java·python·milvus
严同学正在努力2 小时前
从备份到恢复:我用 30 分钟恢复了误删的核心业务表
android·java·数据库·ai
来一碗刘肉面2 小时前
树的存储结构
数据结构
QQ_21696290963 小时前
Spring Boot 养老院管理系统:从入住、护理到费用结算的全流程实现(源码可领)
java·spring boot·后端