当前位置: 首页 > news >正文

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

目录

方法一:使用传统循环

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

相关文章:

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

目录 方法一&#xff1a;使用传统循环 方法二&#xff1a;使用 Java 8 的流&#xff08;Stream&#xff09;API 方法三&#xff1a;使用 Guava 库 总结 将 List<Map<String, Object>> 转换为 List<JSONObject> 有多种方法。以下是几种常见的方法&#xf…...

使用Python来下一场深夜雪

效果图&#xff1a;&#xff08;真实情况是动态的&#xff09; 完整代码&#xff1a; import turtle import random# 初始化画布 turtle.bgcolor("#001f3f") # 偏深蓝色的背景 turtle.title("下雪的画面") turtle.speed(0) turtle.hideturtle() turtle.t…...

uniapp使用easyinput文本框显示输入的字数和限制的字数

uniapp使用easyinput文本框显示输入的字数和限制的字数 先上效果图&#xff1a; 整体代码如下&#xff1a; <template><view class"nameInfoContent"><uni-easyinput class"uni-mt-5" suffixIcon"checkmarkempty" v-model&quo…...

蓝牙技术的多种模式详解

蓝牙作为一种广泛应用的无线通信技术&#xff0c;已经在我们的日常生活中无处不在。随着技术的发展&#xff0c;蓝牙已经不再仅限于传统的音频传输&#xff0c;而是扩展到了各种应用领域。本文将深入探讨蓝牙的各种模式及其应用场景。 1. 经典蓝牙&#xff08;BR/EDR&#xff…...

攻防世界-流量分析WP

流量分析1来自 <攻防世界> 题目描述:流量分析&#xff0c;你知道这堆流量做了什么事情吗&#xff0c;你能恢复出来flag吗&#xff1f; 1&#xff0c;首先查看IPv4统计信息 如果该流量记录的是黑客的攻击行为产生的流量&#xff0c;那么出现频率最高的流量应该来自攻击者…...

打印爱心型

#include<stdio.h> int main() { printf("\n\n\n"); //输出梯形 // printf("\033{31m"); int t0,i0,j0; for (i 0; i <3; i)//输出行数 { for (t 1; t<5-i*2;t)//输出空格 printf(" "); …...

WASM 使用说明23事(RUST实现)

文章目录 1. wasm是什么1.1 chatgpt定义如下:1.2 wasm关键特性&#xff1a; 2. wasm demo2.1 cargo 创建项目2.2 编写code2.3 安装wasm-pack2.4 编译 3.1 html页面引用wasm代码&#xff08;js引用&#xff09;3.2 访问页面4 导入js function4.1 编写lib.rs文件&#xff0c;内容…...

Visual studio 下载安装

1&#xff0c;Visual stutdio 网址 下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 2&#xff0c;下划页面&#xff0c;点击 较早的下载 3&#xff0c;选择对应的版本进行下载...

jEasyUI 创建自定义视图

jEasyUI 创建自定义视图 jEasyUI&#xff08;jQuery EasyUI&#xff09;是一个基于jQuery的用户界面插件集合&#xff0c;它为用户提供了一系列的UI组件&#xff0c;如菜单、窗口、表格等&#xff0c;使得Web界面的开发变得更加简单快捷。在本文中&#xff0c;我们将探讨如何使…...

SpringMVC6-SpringMVC的视图

目录 ThymeleafView 转发视图 重定向视图 视图控制器view-controller SpringMVC中的视图是View接口&#xff0c;视图的作用&#xff1a;渲染数据&#xff0c;将模型Model中的数据展示给用户 SpringMVC视图的种类很多&#xff0c;默认有转发视图InternalResourceView 和重定…...

echarts给Y轴的不同轴线设置不同的颜色的样式

官方文档 option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data: [150, 230, 224, 218, 135, 147, 260],type: line,}] }; 效果&#xff1a; 需要添加参数markLine option {xAxis: {type: category,data: [M…...

从0到1构建 UniApp + Vue3 + TypeScript 移动端跨平台开源脚手架

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f343; vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode&#x1f4ab; Gitee &#x1f…...

论文笔记:LaDe: The First Comprehensive Last-mile Delivery Dataset from Industry

2023 KDD 1 intro 1.1 背景 随着城市化进程的加快和电子商务的发展&#xff0c;最后一公里配送已成为一个关键的研究领域 最后一公里配送&#xff0c;如图1所示&#xff0c;是指连接配送中心和客户的包裹运输过程&#xff0c;包括包裹的取件和配送除了对客户满意度至关重要外…...

无用的知识又增加了-静态二值贝叶斯滤波

静态二值贝叶斯滤波 静态二值贝叶斯滤波&#xff08;Static Binary Bayes Filter&#xff09;是一种用于处理二值状态&#xff08;例如&#xff0c;目标存在或不存在&#xff09;的简单贝叶斯滤波器。这种滤波器通常应用于目标检测、传感器融合等场景&#xff0c;其中状态空间…...

cesium相机(camera)控制

camera基础属性&#xff1a; Cesium 中的相机通过 viewer.camera 来获取和操作。 position:相机的位置,用 Cartesian3 坐标表示&#xff0c;表示的是相机在世界坐标系中的绝对位置。 viewer.camera.position Cesium.Cartesian3.fromDegrees(longitude, latitude, height);dir…...

Java 反射

一、基本概念 Java反射机制是Java语言的一种动态特性&#xff0c;允许程序在运行时检查和操作类、接口、字段和方法。反射机制使得Java程序可以在运行时获取关于类的详细信息&#xff0c;并且可以动态地调用类的方法、访问类的字段等。反射机制主要涉及以下几个核心类和接口&a…...

【目标检测01】真实框、预测框、锚框和交并比IoU

文章目录 1. 任务定义2. 基本概念2.1 边界框&#xff08;bounding box&#xff09;2.2 真实框、预测框和锚框2.3 交并比 (IoU)2.4 代码实现 1. 任务定义 目标检测的主要目的是让计算机可以自动识别图片或者视频帧中所有目标的类别&#xff0c;并在该目标周围绘制边界框&#x…...

青少年编程能力等级测评CPA C++五级试卷(2)

青少年编程能力等级测评CPA C++五级试卷(2) 一、单项选择题(共15题,每题3分,共45分) CP5_2_1.下列有关类的重用方法的叙述中,不正确的是( )。 A.类的继承可以实现类的重用 B.类的组合可以实现类的重用 C.类的封装可以实现类的重用 D.类的继承和类的组合都可…...

SATA数据线

SATA 数据线&#xff08;Serial ATA 数据线&#xff09;是一种用于连接计算机主板与存储设备&#xff08;如硬盘、固态硬盘和光驱&#xff09;的线缆。它的主要作用是传输数据&#xff0c;允许计算机与这些设备之间进行高效的数据交换。 主要作用 数据传输&#xff1a;SATA 数…...

《云原生安全攻防》-- K8s攻击案例:权限维持的攻击手法

在本节课程中&#xff0c;我们将一起深入了解K8s权限维持的攻击手法&#xff0c;通过研究这些攻击手法的技术细节&#xff0c;来更好地认识K8s权限维持所带来的安全风险。 在这个课程中&#xff0c;我们将学习以下内容&#xff1a; K8s权限维持&#xff1a;简单介绍K8s权限维持…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 &#xff1a;开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置&#xff0c;将微信开发者工具放入到Hbuilder中&#xff0c; 打开后出现 如下 bug 解…...