Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)(一)

简介: Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)(一)

Java对象 转 JSON字符串


JAR包

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>         
</dependency>


USER类

package com.example.demo.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
//需要导入lombok
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private String name;
    private int age;
    private String sex;
}


package com.kuang.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.kuang.pojo.User;
import java.util.ArrayList;
import java.util.List;
public class FastJsonDemo {
   public static void main(String[] args) {
       //创建一个对象
       User user1 = new User("秦疆1号", 3, "男");
       User user2 = new User("秦疆2号", 3, "男");
       User user3 = new User("秦疆3号", 3, "男");
       User user4 = new User("秦疆4号", 3, "男");
       List<User> list = new ArrayList<User>();
       list.add(user1);
       list.add(user2);
       list.add(user3);
       list.add(user4);
       System.out.println("*******Java对象 转 JSON字符串*******");
       String str1 = JSON.toJSONString(list);
       System.out.println("JSON.toJSONString(list)==>"+str1);
       String str2 = JSON.toJSONString(user1);
       System.out.println("JSON.toJSONString(user1)==>"+str2);
       System.out.println("\n****** JSON字符串 转 Java对象*******");
       User jp_user1=JSON.parseObject(str2,User.class);
       System.out.println("JSON.parseObject(str2,User.class)==>"+jp_user1);
       System.out.println("\n****** Java对象 转 JSON对象 ******");
       JSONObject jsonObject1 = (JSONObject) JSON.toJSON(user2);
       System.out.println("(JSONObject) JSON.toJSON(user2)==>"+jsonObject1.getString("name"));
       System.out.println("\n****** JSON对象 转 Java对象 ******");
       User to_java_user = JSON.toJavaObject(jsonObject1, User.class);
       System.out.println("JSON.toJavaObject(jsonObject1, User.class)==>"+to_java_user);
  }
}


输出为:

*******Java对象 转 JSON字符串*******
JSON.toJSONString(list)==>[{"age":3,"name":"秦疆1号","sex":"男"},{"age":3,"name":"秦疆2号","sex":"男"},{"age":3,"name":"秦疆3号","sex":"男"},{"age":3,"name":"秦疆4号","sex":"男"}]
JSON.toJSONString(user1)==>{"age":3,"name":"秦疆1号","sex":"男"}
****** JSON字符串 转 Java对象*******
JSON.parseObject(str2,User.class)==>User(name=秦疆1号, age=3, sex=男)
****** Java对象 转 JSON对象 ******
(JSONObject) JSON.toJSON(user2)==>秦疆2号
****** JSON对象 转 Java对象 ******
JSON.toJavaObject(jsonObject1, User.class)==>User(name=秦疆2号, age=3, sex=男)


JAVA对象转MAP


jar

<dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.3</version>
        </dependency>
package com.example.demo.controller.Demo;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.example.demo.entity.User;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class demoTest3 {
    public static void main(String[] args) throws IllegalAccessException {
        //创建一个对象
        //JAVA中将对象转为Map类型
        User user = new User();
        user.setName("闫文超");
        user.setSex("男");
        user.setAge(16);
          Map map1 = beanToMap(user);
        System.out.println("\n******  Java对象 转Map*******");
        System.out.println("Map" + map1);
        Map<String, Object> map2 = objectToMap2(user);
        System.out.println("\n******  Java对象 转Map*******");
        System.out.println("JSON.parseObject(JSON.toJSONString(obj), Map.class)==>" + map2);
    }
    /**
     * 将java对象转换为Map
     * @param obj
     * @return
     */
    public static Map<String, Object> objectToMap2(Object obj) {
        return JSON.parseObject(JSON.toJSONString(obj), Map.class);
    }
    /**
     * 将java对象转换为Map
     * @param object
     * @return
     * @throws IllegalAccessException
     */
    public static Map beanToMap(Object object) throws IllegalAccessException {
        Map<String, Object> map = new HashMap<String, Object>();
        Field[] fields = object.getClass().getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            map.put(field.getName(), field.get(object));
        }
        return map;
    }
}



Map转java对象


package com.example.demo.controller.Demo;
import com.example.demo.entity.User;
import org.apache.commons.beanutils.BeanUtils;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class demoTest3 {
    public static void main(String[] args) throws IllegalAccessException {
        User user = new User();
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("name", "闫文超");
        map.put("sex", "男");
        map.put("age", 16);
        // 将map转换为java对象(bean)
        Object user1 = transMap2Bean(map, user);
        System.out.println("\n****** Map转Java对象******");
        System.out.println("工具demo1"+user1);
        Object user2 = transMapBean(map, user);
        System.out.println("\n****** Map转Java对象******");
        System.out.println("工具demo2"+user2);
    }
    /**
     * 将map转换为java对象(bean)
     *
     * @param map
     * @param obj
     * @return
     */
    public static User transMap2Bean(Map<String, Object> map, Object obj) {
        if (map == null || obj == null) {
            return null;
        }
        try {
            BeanUtils.populate(obj, map);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return (User) obj;
    }
    public static User transMapBean(Map<String, Object> map, Object obj) {
        try {
            BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
            for (PropertyDescriptor property : propertyDescriptors) {
                String key = property.getName();
                if (map.containsKey(key)) {
                    Object value = map.get(key);
                    // 得到property对应的setter方法
                    Method setter = property.getWriteMethod();
                    setter.invoke(obj, value);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return (User) obj;
    }
}


List转map


package com.example.面向对象1;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class listdemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        Map<String, String> map = list.stream().collect(Collectors.toMap(key -> key, value -> value));
        System.out.println(map);
    }
}



List和Map 的相互转换


package com.example.面向对象1;
import java.util.*;
import java.util.stream.Collectors;
public class listdemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        //java的
        Map<String, String> map1 = list.stream().collect(Collectors.toMap(key -> key, value -> value));
        System.out.println("\n********list对象 转 map*******");
        System.out.println("stream=1=>" + map1);
        List<user> list6 = new ArrayList<>();
        list6.add(new user(1, "a"));
        list6.add(new user(2, "b"));
        list6.add(new user(3, "c"));
// 遍历
        Map<Integer, String> keyValueMap = new HashMap<>();
        for (user keyValue : list6) {
            keyValueMap.put(keyValue.getId(), keyValue.getName());
        }
        keyValueMap.forEach((k, v) -> System.out.println(k + " ==> " + v));
// Java8 Stream
        Map<Integer, String> ma1p1 = list6.stream().collect(Collectors.toMap(user::getId, user::getName));
        System.out.println("\n********list对象 转 map*******");
        System.out.println("stream=2=>" + ma1p1);
        //todo-----------------------------------------------------------------------------------------
        //map转list
        Map<Integer, String> map = new HashMap<>();
        map.put(10, "apple");
        map.put(20, "orange");
        map.put(30, "banana");
        map.put(40, "watermelon");
        map.put(50, "dragonfruit");
        System.out.println("\n******** map转 list 获取key值 *******");
        List<Integer> result = new ArrayList(map.keySet());
        result.forEach(System.out::println);
        System.out.println("\n******** map转 list 获取value值 *******");
        List<String> result2 = new ArrayList(map.values());
        result2.forEach(System.out::println);
        Map map2 = new HashMap();
        map2.put("yan", "xi");
        map2.put("wen", "huan");
        map2.put("chao", "ni");
        List list1 = new ArrayList(map2.keySet());
        List list2 = new ArrayList(map2.values());
        System.out.println("\n******** map转 list 获取key值 *******");
        System.out.println("map转list获取key的值==>"+list1);
        System.out.println("\n******** map转 list 获取value值 *******");
        System.out.println("map转list获取value的值==>"+ list2);
    }
//    public Map<String, List<Student>> groupList(List<Student> students) {
//        Map<String, List<Student>> map = students.stream().collect(Collectors.groupingBy(Student::getName));
//        return map;
//    }
}



相关文章
|
8月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
1037 157
|
12月前
|
自然语言处理 前端开发 Java
JBoltAI 框架完整实操案例 在 Java 生态中快速构建大模型应用全流程实战指南
本案例基于JBoltAI框架,展示如何快速构建Java生态中的大模型应用——智能客服系统。系统面向电商平台,具备自动回答常见问题、意图识别、多轮对话理解及复杂问题转接人工等功能。采用Spring Boot+JBoltAI架构,集成向量数据库与大模型(如文心一言或通义千问)。内容涵盖需求分析、环境搭建、代码实现(知识库管理、核心服务、REST API)、前端界面开发及部署测试全流程,助你高效掌握大模型应用开发。
1093 5
|
前端开发 JavaScript Java
Java 学习路线规划及项目案例中的技术栈应用解析
内容包括:**Java 17核心特性**(如sealed class、record)与模块化开发;Spring Boot 3 + Spring Cloud微服务架构,涉及响应式编程(WebFlux)、多数据库持久化(JPA、R2DBC、MongoDB);云原生技术**如Docker、Kubernetes及CI/CD流程;性能优化(GraalVM Native Image、JVM调优);以及前后端分离开发(Vue 3、Spring Boot集成)。通过全栈电商平台项目实战,掌握从后端服务(用户、商品、订单)到前端应用(Vue 3、React Native)的全流程开发。
560 9
|
10月前
|
缓存 安全 Java
Java反射机制:动态操作类与对象
Java反射机制是运行时动态操作类与对象的强大工具,支持获取类信息、动态创建实例、调用方法、访问字段等。它在框架开发、依赖注入、动态代理等方面有广泛应用,但也存在性能开销和安全风险。本文详解反射核心API、实战案例及性能优化策略,助你掌握Java动态编程精髓。
|
人工智能 Java 开发者
【Java实例-简易计算机】使用Java实现简单的计算机案例
一个简单的Java案例——“简易计算器”,帮助编程新手快速上手。通过实现用户输入、基本逻辑运算和结果输出,学习者可以掌握变量声明、Scanner对象使用、控制流语句等关键知识点。文章分为设计思路、关键知识点、完整代码和测试运行四个部分。
334 9
【Java实例-简易计算机】使用Java实现简单的计算机案例
|
10月前
|
存储 人工智能 JavaScript
Java从作用域到对象高级应用​
本内容详细讲解了JavaScript中的作用域类型(函数作用域、块作用域、全局作用域)、作用域链、垃圾回收机制、闭包、变量提升、函数参数、数组方法、内置构造函数、对象高级知识、原型链、对象赋值、深浅拷贝、递归、异常处理及this指向等内容,全面覆盖JS核心概念与编程技巧。
127 0
|
12月前
|
Java 数据库连接 API
Java 对象模型现代化实践 基于 Spring Boot 与 MyBatis Plus 的实现方案深度解析
本文介绍了基于Spring Boot与MyBatis-Plus的Java对象模型现代化实践方案。采用Spring Boot 3.1.2作为基础框架,结合MyBatis-Plus 3.5.3.1进行数据访问层实现,使用Lombok简化PO对象,MapStruct处理对象转换。文章详细讲解了数据库设计、PO对象实现、DAO层构建、业务逻辑封装以及DTO/VO转换等核心环节,提供了一个完整的现代化Java对象模型实现案例。通过分层设计和对象转换,实现了业务逻辑与数据访问的解耦,提高了代码的可维护性和扩展性。
474 1
|
12月前
|
前端开发 Java 数据库连接
java bo 对象详解_全面解析 java 中 PO,VO,DAO,BO,POJO 及 DTO 等几种对象类型
Java开发中常见的六大对象模型(PO、VO、DAO、BO、POJO、DTO)各有侧重,共同构建企业级应用架构。PO对应数据库表结构,VO专为前端展示设计,DAO封装数据访问逻辑,BO处理业务逻辑,POJO是简单的Java对象,DTO用于层间数据传输。它们在三层架构中协作:表现层使用VO,业务层通过BO调用DAO处理PO,DTO作为数据传输媒介。通过在线商城的用户管理模块示例,展示了各对象的具体应用。最佳实践包括保持分层清晰、使用工具类转换对象,并避免过度设计带来的类膨胀。理解这些对象模型的区别与联系。
955 1
|
12月前
|
缓存 算法 NoSQL
校招 Java 面试高频常见知识点深度解析与实战案例详细分享
《2025校招Java面试核心指南》总结了Java技术栈的最新考点,涵盖基础语法、并发编程和云原生技术三大维度: 现代Java特性:重点解析Java 17密封类、Record类型及响应式Stream API,通过电商案例演示函数式数据处理 并发革命:对比传统线程池与Java 21虚拟线程,详解Reactor模式在秒杀系统中的应用及背压机制 云原生实践:提供Spring Boot容器化部署方案,分析Spring WebFlux响应式编程和Redis Cluster缓存策略。
362 0
|
12月前
|
人工智能 Java API
Java 生态大模型应用开发全流程实战案例与技术路径终极对决
在Java生态中开发大模型应用,Spring AI、LangChain4j和JBoltAI是三大主流框架。本文从架构设计、核心功能、开发体验、性能扩展性、生态社区等维度对比三者特点,并结合实例分析选型建议。Spring AI适合已有Spring技术栈团队,LangChain4j灵活性强适用于学术研究,JBoltAI提供开箱即用的企业级解决方案,助力传统系统快速AI化改造。开发者可根据业务场景和技术背景选择最适合的框架。
2682 2

热门文章

最新文章