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

相关推荐
long31626 分钟前
封装(Encapsulation)
java·人工智能·ai·ai编程
yaoxin52112328 分钟前
502. Java 反射 - 编写 MessageInterceptor 类
java·开发语言
风流 少年32 分钟前
Spring AI 2.0:阿里云百炼平台(工作流应用)
java·后端·spring
长谷深风11137 分钟前
AI Tool 设计:粒度、参数与错误恢复怎么做
java·大数据·人工智能·ai agent·agent工作流·智能体设计·ai产品设计
疯狂打码的少年2 小时前
【数据结构】交换类排序:冒泡与快速排序
数据结构·笔记·算法·排序算法
QQ_21696290962 小时前
【项目编号:project95315】SpringBoot公共自习室管理系统:座位预约、房间管理、签到核销、公告规则完整实战
java·spring boot·后端
嵌入式阿蔡2 小时前
面试高频考点 01:volatile / 中断 / 堆栈 八股精讲
java·面试·职场和发展·嵌入式实时数据库
Nil2082 小时前
leetcode 108有序数组转换为二叉搜索树
数据结构·算法·leetcode
hn小菜鸡2 小时前
LeetCode 763、划分字母区间
数据结构·算法·leetcode
秋饼2 小时前
LangChain4j + Java 实现企业级 Text-to-SQL 智能问数系统:从自然语言到安全可控的数据洞察
java·ai·技术分享·后端开发