首页 > 编程语言 >java list<Map<String,Object>> 转成对应的对象

java list<Map<String,Object>> 转成对应的对象

时间:2024-09-18 21:22:50浏览次数:3  
标签:Map java String age List User public name

List<Map<String, Object>> 转换为对应的对象可以通过反射或手动映射来实现。以下是一个示例,演示如何使用手动映射的方式将 List<Map<String, Object>> 转换为对象列表。

示例代码

假设我们有一个简单的对象类 User

public class User {
    private String name;
    private int age;

    // Constructors, getters and setters

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

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

转换方法

下面是一个方法,将 List<Map<String, Object>> 转换为 List<User>

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class Converter {

    public static List<User> convertToUserList(List<Map<String, Object>> mapList) {
        List<User> userList = new ArrayList<>();
        
        for (Map<String, Object> map : mapList) {
            String name = (String) map.get("name");
            int age = (Integer) map.get("age");
            User user = new User(name, age);
            userList.add(user);
        }
        
        return userList;
    }
}

使用示例

下面是如何使用上述转换方法的示例:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        // 模拟输入数据
        List<Map<String, Object>> mapList = new ArrayList<>();
        
        Map<String, Object> user1 = new HashMap<>();
        user1.put("name", "Alice");
        user1.put("age", 30);
        
        Map<String, Object> user2 = new HashMap<>();
        user2.put("name", "Bob");
        user2.put("age", 25);
        
        mapList.add(user1);
        mapList.add(user2);
        
        // 转换
        List<User> userList = Converter.convertToUserList(mapList);
        
        // 输出结果
        for (User user : userList) {
            System.out.println(user);
        }
    }
}

运行结果

运行上述代码将输出:

User{name='Alice', age=30}
User{name='Bob', age=25}

使用Hutool

使用 Hutool 库可以方便地将 List<Map<String, Object>> 转换为对应的对象。Hutool 提供了 BeanUtil 类,使用它的 mapToBean 方法可以实现该转换。

示例代码

假设我们有一个 User 类:

public class User {
    private String name;
    private int age;

    // Constructors, getters and setters

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

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

转换方法

使用 Hutool 进行转换的代码示例如下:

import cn.hutool.core.bean.BeanUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class Converter {
    public static List<User> convertToUserList(List<Map<String, Object>> mapList) {
        List<User> userList = new ArrayList<>();
        
        for (Map<String, Object> map : mapList) {
            User user = BeanUtil.mapToBean(map, User.class, true);
            userList.add(user);
        }
        
        return userList;
    }
}

使用示例

下面是如何使用上述转换方法的示例:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        // 模拟输入数据
        List<Map<String, Object>> mapList = new ArrayList<>();
        
        Map<String, Object> user1 = new HashMap<>();
        user1.put("name", "Alice");
        user1.put("age", 30);
        
        Map<String, Object> user2 = new HashMap<>();
        user2.put("name", "Bob");
        user2.put("age", 25);
        
        mapList.add(user1);
        mapList.add(user2);
        
        // 转换
        List<User> userList = Converter.convertToUserList(mapList);
        
        // 输出结果
        for (User user : userList) {
            System.out.println(user);
        }
    }
}

运行结果

运行上述代码将输出:

User{name='Alice', age=30}
User{name='Bob', age=25}

注意事项

  • 确保在项目中引入了 Hutool 库,可以在 Maven 中添加以下依赖:
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.9</version> <!-- 请根据需要选择版本 -->
</dependency>
  • 使用 BeanUtil.mapToBean 时,可以设置第三个参数为 true,以忽略缺失的字段。

标签:Map,java,String,age,List,User,public,name
From: https://blog.51cto.com/u_16694558/12049078

相关文章

  • 前端——JavaScript练习 做一个todoList
    用前端制作一个todoList的表格,实现更新、删除、修改等功能。涉及几个知识点:设置最小高度(宽度):.container{min-width:350px;/*最小宽度最小不会小于210px*/} 去掉外轮廓outline:none;去除字符串两端的空白字符(包括空格、制表符、......
  • java代码-编译-打包-执行_云原生时代笔记总结
    楔子:可能201几年开发的时候,有个ide,加上打包插件,就可以开发了,测试的时候war包扔到服务器容器里就可以跑起来了。(而且没有做过批处理的小伙伴对jar包执行可能不甚熟悉,只见过web容器的目录结构和lib中的jar包。)但是2015年之后应该是全面进入,云原生时代。大量操作需要linux命令行......
  • 0708,文件流,目录流,MMAP内存映射
    目录目录相关操作目录流及相关操作文件描述符和相关操作fopen()和open()的关系内存映射mmapmmap相关函数01_chdir.c02_mkdir.c03_rewinddir.c04_ftruncate.c05_mmap.c目录相关操作#include<unistd.h>#include<sys/stat.h>#include<sys/types.h>char*getcw......
  • ICPC2021 沈阳站 M String Problem 题解 | 十种做法一网打尽 , 一道题带你回顾字符串科
    题目传送门题意给定一个字符串,求每个前缀的字典最大序子串。注意到:对于每个前缀$s_{[1,i]}$,字典序最大子串的右边界一定是\(i\)。随着着\(i\)的增大,字典序最大子串的左边界一定是单调不减的。解法不分先后。后缀数组SASA&SAM后缀数组&后缀自动机SA对所有......
  • java-----Stream流
    什么是Stream?Stream将要处理的元素集合看作一种流,在流的过程中,借助StreamAPI对流中的元素进行操作,比如:筛选、排序、聚合等Stream流的作用:结合了Lambda表达式,简化集合、数组的操作Stream流的使用步骤:    ①先得到一条Stream流(流水线),并把数据放上去  ......
  • [Java基础]Stream流
    当我第一次阅读Java8中的StreamAPI时,说实话,我非常困惑,因为它的名字听起来与JavaI0框架中的InputStream和OutputStream非常类似。但是实际上,它们完全是不同的东西。Java8Stream使用的是函数式编程模式,如同它的名字一样,它可以被用来对集合进行链状流式的操作。本文......
  • JDK21中找不到 javax.annotation.Resource 了?
    在JDK9及以后版本,特别是到JDK21,javax.annotation.Resource这样的类已经不再包含在标准的JDK中。原因是从JDK9开始,Java进行了模块化(ProjectJigsaw),并移除了部分与JavaEE(现在称为JakartaEE)相关的包,例如javax.annotation。为什么会找不到javax.annotation.Resourc......
  • 【JavaSE】--数组的定义与使用
    文章目录1.数组的基本概念1.1什么是数组1.2数组的创建及初始化1.2.1数组的创建1.2.2数组的初始化1.3数组的使用1.3.1数组中元素访问1.3.2遍历数组2.数组是引用类型2.1初识JVM的内存分布2.2基本类型变量与引用类型变量的区别2.3再谈引用变量2.4认识null3......
  • 【Java SpringBoot + Vue】打造专属动漫插画分享系统,四步掌握建站精髓,让动漫爱好者轻
    ......
  • 基于JAVA文件传输的计算机毕设源码+论文
    摘  要Abstract引  言1技术简介1.1Java语言1.1.4分布性1.3Java中输入/输出流概念1.5JBuilder集成开发环境介绍2系统分析2.1可行性分析2.2开发工具2.3需求分析3系统详细设计3.1系统的主要功能摘 要随着计算机网络技术的飞速发展,客户/服务C/S(Client/......