将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 类型。

相关推荐
2501_902556232 分钟前
C++ 中 cin 和 cout 教程
数据结构·c++
心灵Haven3 分钟前
1_安装JDK和Hadoop
java·开发语言·hadoop
web1368856587110 分钟前
PHP For 循环
android·java·php
loyd324 分钟前
【数据分析】5 设计不同业务分析框架
java·网络·数据分析
m0_7482451730 分钟前
Spring Boot项目开发常见问题及解决方案(上)
java·spring boot·后端
今天的接口写完了吗?31 分钟前
Spring Boot操作MaxComputer(保姆级教程)
java·spring boot·后端
萌の鱼40 分钟前
leetcode 73. 矩阵置零
数据结构·c++·算法·leetcode·矩阵
好看资源平台40 分钟前
‌KNN算法优化实战分享——基于空间数据结构的工业级实战指南
数据结构·算法
金州小铁匠44 分钟前
基于EasyExcel封装的Excel工具类,支持高效导出和读取操作
java·spring·excel
IIIIIIlllii1 小时前
java练习(43)
java·开发语言