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

相关推荐
shuair3 分钟前
tomcat的accept-count、max-connections、max-threads三个参数的含义
java·tomcat
画船听雨眠aa6 分钟前
SSM项目本地Tomcat部署
java·tomcat
极客先躯16 分钟前
高级java每日一道面试题-2025年01月24日-框架篇[SpringMVC篇]-SpringMVC常用的注解有哪些?
java·springmvc·常用的注解
咕德猫宁丶21 分钟前
Spring Boot 邂逅Netty:构建高性能网络应用的奇妙之旅
java·spring boot·后端
_板栗_24 分钟前
Java8 - flatMap() 介绍
java·stream
计算机学姐34 分钟前
基于微信小程序的网上订餐管理系统
java·vue.js·spring boot·mysql·微信小程序·小程序·intellij-idea
博一波35 分钟前
【设计模式-行为型】访问者模式
java·设计模式·访问者模式
计算机-秋大田1 小时前
基于JAVA的微信点餐小程序设计与实现(LW+源码+讲解)
java·开发语言·后端·微信·小程序·课程设计
花鱼白羊1 小时前
代码随想录刷题day14(2)|(链表篇)02.07. 链表相交(疑点)
数据结构·链表
llp11101 小时前
基于java线程池和EasyExcel实现数据异步导入
java·开发语言