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

embedded/2024/10/22 7:32:06/

目录

方法一:使用传统循环

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

方法三:使用 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() 方法将结果收集到一个新的列表中。

http://www.ppmy.cn/embedded/129507.html

相关文章

Docker设置日志滚动

问题描述 Docker 容器中的进程会将打印到控制台(console)的日志保存到容器的目录下&#xff0c;默认的 Docker 配置不带有日志的回滚。会在自己的容器目录下往同一个日志文件中不停写入&#xff0c;最后会导致磁盘空间占满的问题。 解决方案 方案一&#xff1a;全局范围内修…

时间数据可视化基础实验——Python实现

【实验名称】 实验一:时间数据的可视化 【实验目的】 1.掌握时间数据在大数据中的应用 2.掌握时间数据可视化图表表示 3. 利用python程序实现堆叠柱形图的可视化 【实验原理】

Web前端-JavaScript输入输出语法

一、输出语法 1.语法一 作用:向body内输出内容 注意:如果输出的内容写的是标签&#xff0c;也会被解析成网页元素 例如&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewpor…

大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

ORB -SLAM2 ---- Tracking::Tracking和GrabImageStereo

文章目录 一、Tracking::Tracking1. 函数讲解&#xff0c;2. 函数源码 一、GrabImageStereo()1. 函数讲解2. 函数源码 三、 学习方法&#xff08;路线&#xff09;四、总结 一、Tracking::Tracking 1. 函数讲解&#xff0c; 这是Tracking中的构造函数&#xff0c;此函数的主要…

一起搭WPF架构之livechart的MVVM使用介绍

一起搭WPF架构之livechart使用介绍 前言ModelViewModelView界面设计界面后端 效果总结 前言 简单的架构搭建已经快接近尾声了&#xff0c;考虑设计使用图表的形式将SQLite数据库中的数据展示出来。前期已经介绍了livechart的安装&#xff0c;今天就详细介绍一下livechart的使用…

【Python-AI篇】数据结构和算法

1. 算法概念 1.1 什么是数据结构 存储&#xff0c;组织数据的方式 1.2 什么是算法 实现业务目的的各种方法和思路算法是独立的存在&#xff0c;只是思想&#xff0c;不依附于代码和程序&#xff0c;可以使用不同语言实现&#xff08;java&#xff0c;python&#xff0c;c&a…

人工智能技术的应用前景及其对生活和工作方式的影响

人工智能技术的应用前景及其对生活和工作方式的影响 随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;其在各个领域的应用正日益深入&#xff0c;深刻改变着我们的生活和工作方式。本文将系统地探讨人工智能的历史、现状、未来应用前景&#xff0c;以及其对个…