java List<Map<String, Object>> 转 List<JSONObject> 的几种方式

目录

方法一:使用传统循环

[方法二:使用 Java 8 的流(Stream)API](#方法二:使用 Java 8 的流(Stream)API)

[方法三:使用 Guava 库](#方法三:使用 Guava 库)

总结


List<Map<String, Object>> 转换为 List<JSONObject> 有多种方法。以下是几种常见的方法,包括使用传统的循环、Java 8 的流(Stream)API 和 Guava 库。

方法一:使用传统循环

复制代码
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        // 创建一个示例 List<Map<String, Object>>
        List<Map<String, Object>> originalList = new ArrayList<>();

        Map<String, Object> map1 = new HashMap<>();
        map1.put("name", "John Doe");
        map1.put("age", 30);
        map1.put("isStudent", false);

        Map<String, Object> map2 = new HashMap<>();
        map2.put("name", "Jane Doe");
        map2.put("age", 25);
        map2.put("isStudent", true);

        originalList.add(map1);
        originalList.add(map2);

        // 使用传统循环转换为 List<JSONObject>
        List<JSONObject> convertedList = new ArrayList<>();
        for (Map<String, Object> map : originalList) {
            convertedList.add(new JSONObject(map));
        }

        // 打印结果
        for (JSONObject json : convertedList) {
            System.out.println(json.toString());
        }
    }
}

方法二:使用 Java 8 的流(Stream)API

复制代码
import org.json.JSONObject;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        // 创建一个示例 List<Map<String, Object>>
        List<Map<String, Object>> originalList = new ArrayList<>();

        Map<String, Object> map1 = new HashMap<>();
        map1.put("name", "John Doe");
        map1.put("age", 30);
        map1.put("isStudent", false);

        Map<String, Object> map2 = new HashMap<>();
        map2.put("name", "Jane Doe");
        map2.put("age", 25);
        map2.put("isStudent", true);

        originalList.add(map1);
        originalList.add(map2);

        // 使用 Stream API 转换为 List<JSONObject>
        List<JSONObject> convertedList = originalList.stream()
                .map(JSONObject::new)
                .collect(Collectors.toList());

        // 打印结果
        for (JSONObject json : convertedList) {
            System.out.println(json.toString());
        }
    }
}

方法三:使用 Guava 库

如果你已经在项目中使用了 Guava 库,可以利用 FluentIterableFunctions 来简化转换过程。

首先,确保你已经添加了 Guava 库的依赖。如果你使用的是 Maven,可以在 pom.xml 中添加以下依赖:

复制代码
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>

然后,使用 Guava 进行转换:

复制代码
import com.google.common.collect.FluentIterable;
import com.google.common.base.Functions;
import org.json.JSONObject;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        // 创建一个示例 List<Map<String, Object>>
        List<Map<String, Object>> originalList = new ArrayList<>();

        Map<String, Object> map1 = new HashMap<>();
        map1.put("name", "John Doe");
        map1.put("age", 30);
        map1.put("isStudent", false);

        Map<String, Object> map2 = new HashMap<>();
        map2.put("name", "Jane Doe");
        map2.put("age", 25);
        map2.put("isStudent", true);

        originalList.add(map1);
        originalList.add(map2);

        // 使用 Guava 转换为 List<JSONObject>
        List<JSONObject> convertedList = FluentIterable.from(originalList)
                .transform(Functions.<Map<String, Object>>identity().compose(JSONObject::new))
                .toList();

        // 打印结果
        for (JSONObject json : convertedList) {
            System.out.println(json.toString());
        }
    }
}

总结

  1. 方法一:使用传统循环

    • 创建一个空的 List<JSONObject>
    • 遍历 List<Map<String, Object>>,将每个 Map 转换为 JSONObject 并添加到新的列表中。
  2. 方法二:使用 Java 8 的流(Stream)API

    • 使用 stream() 方法创建一个流。
    • 使用 map(JSONObject::new) 将每个 Map 转换为 JSONObject
    • 使用 collect(Collectors.toList()) 将流中的元素收集到一个新的列表中。
  3. 方法三:使用 Guava 库

    • 使用 FluentIterable.from(originalList) 创建一个可变的迭代器。
    • 使用 transform 方法将每个 Map 转换为 JSONObject
    • 使用 toList() 方法将结果收集到一个新的列表中。
相关推荐
天天摸鱼的java工程师16 小时前
别再只会 new 了!八年老炮带你看透对象创建的 5 层真相
java·后端
洛阳泰山16 小时前
MaxKB4j智能体平台 Docker Compose 快速部署教程
java·人工智能·后端
渣哥16 小时前
Java 为啥偏偏不让多重继承?
java
盖世英雄酱5813616 小时前
深入探索 Java 栈
java·后端
杨杨杨大侠16 小时前
手搓责任链框架 4:链式构建
java·spring·github
Dylan的码园16 小时前
try-catch:异常处理的最佳实践与陷阱规避
java·开发语言·eclipse
凝孑·哒哒哒16 小时前
从一道面试题开始:如何让同时启动的线程按顺序执行?
java·开发语言·面试
渣哥16 小时前
Java 方法传参,到底是值还是引用?
java
伍树明17 小时前
本地搭建搜索Agent(SpringAI + RAG + SearXNG + MCP)
java·spring·agent·mcp
怎么面试17 小时前
EasyExcel 基础用法
java·服务器