实现Map批量赋值,我只需24秒搞定!

函数的功能是将一组键值对批量赋值给Map中的键。在Java中,通常使用Map的put方法逐个将键值对赋值给Map,但在某些场景下,可能需要一次性将多个键值对赋值给Map。

函数功能:Map批量赋值

参数1:参数名称:target;参数类型:Map;参数描述:Map对象

参数2:参数名称:keyAndValue;参数类型:Object;参数描述:key值与value值,先后对应(key=2n,value=2n+1)

假设有一个订单系统,该系统需要根据用户提交的表单数据来创建订单。在这种情况下,可以使用上述Java函数来实现将表单数据批量赋值给订单对象的功能。

具体来说,当订单系统接收到用户提交的表单数据时,它可以调用上述Java函数,并将订单对象作为目标Map对象传递给函数。同时,将表单数据中的键值对作为参数传递给函数。函数会遍历键值对数组,并将每个键值对赋值给目标Map对象,即订单对象。

通过使用上述Java函数,订单系统能够方便地将用户提交的表单数据进行批量赋值,无需手动逐个设置订单对象的属性。这样可以提高开发效率和代码的可维护性,并确保订单对象与表单数据的一致性。

这个时候,你会如何实现该功能呢?手工编写?还是借助AI工具?

接下来我们来看看这2种方式是如何实现这一功能的,它们又有何优劣势呢?或许从对比分析中可以为你找到一把高效交付高质量代码的钥匙。

  • 人工代码

@MethodDesc(desc = "Map批量赋值函数", params = {

        @ParamDesc(name = "target", desc = "目标Map对象"),

        @ParamDesc(name = "keyAndValue", desc = "key和Value参数")})

public static Map batchSetValue(Map target, Object... keyAndValue) {

    try {

        Object key = "";

        int j = 2;

        if (keyAndValue.length % j != 0) {

            throw new FlowTaskException("传入的参数,key和value数量不一致,请自己检查");

        }

        for (int i = 0; i < keyAndValue.length; i++) {

            if (i % j == 0) {

                key = keyAndValue[i];

                if (Objects.isNull(key) || !(key instanceof String)) {

                    throw new FlowTaskException("Map批量赋值异常,传入的key不是字符串类型或为空对象,请检查 key=" + key);

                }

            } else {

                if (Objects.nonNull(keyAndValue[i]) && "null".equals(keyAndValue[i])) {

                    target.put(key, null);

                } else {

                    target.put(key, keyAndValue[i]);

                }

            }

        }

        return target;

    } catch (Exception e) {

        throw e;

    }

}

  • 借助AI工具

通过使用飞算 SoFlu 软件机器人推出的专注AI生成Java函数的 FuncGPT(慧函数)试一下。仅用24秒,FuncGPT(慧函数)就自动生成以下代码:

// 类名:MapUtil

// 函数名:bulkAssignValues

// 函数功能:批量将键值对赋值给Map对象

// POM依赖包:

// <dependency>

//     <groupId>org.apache.commons</groupId>

//     <artifactId>commons-lang3</artifactId>

//     <version>3.12.0</version>

// </dependency>

import org.apache.commons.collections4.MapUtils;

import java.util.Map;

public class MapUtil {

    /**

     * 批量将键值对赋值给Map对象

     * @param target 目标Map对象

     * @param keyAndValue 键值对,先后对应(key=2n,value=2n+1)

     */

    public static void bulkAssignValues(Map<Object, Object> target, Object... keyAndValue) {

        if (target == null) { // 检查目标Map是否为空

            throw new IllegalArgumentException("Target Map cannot be null"); // 抛出异常,目标Map不能为空

        }

        if (keyAndValue == null || keyAndValue.length % 2 != 0) { // 检查键值对参数是否为空或键值对个数是否为偶数

            throw new IllegalArgumentException("Invalid key-value pairs"); // 抛出异常,键值对参数不合法

        }

        for (int i = 0; i < keyAndValue.length; i += 2) {

            Object key = keyAndValue[i];

            Object value = keyAndValue[i + 1];

            target.put(key, value); // 将键值对赋值给目标Map对象

        }

    }

}

// 函数示例

// 批量将键值对赋值给Map对象示例

// 入参:target,目标Map对象

// 入参:keyAndValue,键值对,先后对应(key=2n,value=2n+1)

// 调用示例:

// Map<String, Integer> targetMap = new HashMap<>();

// MapUtil.bulkAssignValues(targetMap, "key1", 1, "key2", 2, "key3", 3);

// System.out.println(targetMap);

// 输出结果:例如,将键值对赋值给Map对象,结果为:{key1=1, key2=2, key3=3}

// 则输出结果为:{key1=1, key2=2, key3=3}

以上对比可以看出:

人工代码

FunGPT(慧函数)

生成时间:2-3分钟

生成时间:24秒

可读性一般,命名注释欠佳

可读性更好,命名注解更加规范

函数名和代码注释能够更清晰地表达代码的功能。

方法较为繁琐

使用循环和判断语句手动处理键值对的赋值逻辑

方法更加简洁、精确

使用Apache Commons Collections工具库提供的方法简化了键值对的赋值过程,并且提供了更精确的参数类型

总结:FunGPT(慧函数)生成代码所使用的方法更加简洁、精确,且代码可读性更好

最后想说一句:AI技术席卷千行百业的当下, AI编程工具层出不穷,开发人员需要根据个人实际的需求选择合适的工具帮助自己提高工作效率,打破能力边界。

该工具免费使用链接:Java全自动开发工具: 新一代Java开发工具 | 可视化编辑 | 测试运维自动化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/71093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言学习:6、C语言程序的循环结构

生活中&#xff0c;有很多循环的东西&#xff0c;比如钟表就是在1到12循环&#xff0c;太阳东升西落也是循环&#xff0c;春夏秋冬也是循环&#xff0c;人生可能也是一个循环。 while C语言中的循环可以这么描述&#xff1a;当某个条件成立&#xff0c;就一直做某件事或某些事…

煤矿虚拟仿真 | 采煤工人VR虚拟现实培训系统

随着科技的发展&#xff0c;虚拟现实(VR)技术已经逐渐渗透到各个行业&#xff0c;其中包括煤矿行业。VR技术可以为煤矿工人提供一个安全、真实的环境&#xff0c;让他们在虚拟环境中进行实际操作和培训&#xff0c;从而提高他们的技能水平和安全意识。 由广州华锐互动开发的采煤…

跳槽面试:如何转换工作场所而不失去优势

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

LeetCode 82 删除排序链表中的重复元素 II

LeetCode 82 删除排序链表中的重复元素 II 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/description/ 博主Github&#xff1a;https://github.com/GDUT-Rp/LeetCode 题目&am…

vue中使用window.open打开assets文件夹下的pdf文件

需求&#xff1a;系统有个操作手册&#xff0c;点击会在浏览器新开个窗口并打开pdf文件。这个pdf文件存储在本地assets文件夹中。 文件结构&#xff1a; 注&#xff1a;直接使用window.open(文件路径)不能打开&#xff0c;需要在vue.config.js中配置所需文件 引入图中红框中的…

QTableWidget实现鼠标悬停整行高亮显示

一、最终效果 二、 重写QTableWidget类 mytablewidget.h #ifndef MYTABLEWIDGET_H #define MYTABLEWIDGET_H#include <QTableWidget>class MyTableWidget : public QTableWidget { public:explicit MyTableWidget(QWidget* parent nullptr);protected:void leaveEve…

Python 套接字编程完整指南

推荐&#xff1a;使用 NSDT场景编辑器 快速搭建3D应用场景 连接设备以交换信息是网络的全部意义所在。套接字是有效网络通信的重要组成部分&#xff0c;因为它们是用于通过本地或全球网络以及同一台计算机上的不同进程在设备之间传输消息的基本概念。它们提供了一个低级接口&am…

python3

#安装python3 brew install python3 看到下图表示安装python3成功: #将python3 加入环境变量 export PATH$PATH:/opt/homebrew/bin/#查看python 版本 python3 --version#查看pip 版本 pip3 --version#更新python源 pip3 config set global.index-url https://pypi.tuna.tsing…

Nginx中实现自签名SSL证书生成与配置

文章目录 一.相关介绍1.生成步骤2.相关名词介绍 二.Nginx中实现自签名SSL证书生成与配置1.私钥生成2.公钥生成3.生成解密的私钥key4.签名生成证书5.配置证书并验证6.登录 一.相关介绍 1.生成步骤 &#xff08;1&#xff09;生成私钥&#xff08;Private Key&#xff09;&…

微信小程序开发前准备

文章目录 一.注册微信小程序开发账号&#xff08;一&#xff09;访问微信公众平台官网&#xff08;二&#xff09;进入注册页面&#xff0c;完成注册信息&#xff08;三&#xff09;设置微信小程序信息 二.获取微信小程序的AppID(一) 什么是小程序AppID&#xff08;二&#xff…

从零开始,无需公网IP,搭建本地电脑上的个人博客网站并发布到公网

文章目录 前言1. 安装套件软件2. 创建网页运行环境 指定网页输出的端口号3. 让WordPress在所需环境中安装并运行 生成网页4. “装修”个人网站5. 将位于本地电脑上的网页发布到公共互联网上 前言 在现代社会&#xff0c;网络已经成为我们生活离不开的必需品&#xff0c;而纷繁…

C#写一个UDP程序判断延迟并运行在Centos上

服务端 using System.Net.Sockets; using System.Net;int serverPort 50001; Socket server; EndPoint client new IPEndPoint(IPAddress.Any, 0);//用来保存发送方的ip和端口号CreateSocket();void CreateSocket() {server new Socket(AddressFamily.InterNetwork, SocketT…

Android 使用OpenCV实现实时人脸识别,并绘制到SurfaceView上

1. 前言 上篇文章 我们已经通过一个简单的例子&#xff0c;在Android Studio中接入了OpenCV。 之前我们也 在Visual Studio上&#xff0c;使用OpenCV实现人脸识别 中实现了人脸识别的效果。 接着&#xff0c;我们就可以将OpenCV的人脸识别效果移植到Android中了。 1.1 环境说…

【Java Web】统一处理异常

一个异常处理的ControllerAdvice类。它用于处理Controller注解的控制器中发生的异常。 具体代码功能如下&#xff1a; 导入相关类和方法。声明一个Logger对象&#xff0c;用于日志记录。使用ExceptionHandler注解标记handleException方法&#xff0c;用于处理所有异常。 -嘛在…

【文末送书】全栈开发流程——后端连接数据源(二)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

2023年海外推广怎么做?

答案是&#xff1a;2023海外推广可以选择谷歌SEO谷歌Ads双向运营。 理解当地文化 成功的海外推广首先是建立在对当地文化的深入了解和尊重的基础上。 本土化策略 为了更好地与当地用户互动&#xff0c;你的品牌、产品或服务需要与他们的文化和生活方式紧密相连。 例如&…

javaee spring aop 的五种通知方式

spring配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:aop"http://www.springframework.…

好用免费的Chat GPT(亲测有用)

1、MindLink麦灵 MindLink麦灵 点进登录后 普通用户可以提问100次 2、你问我答 你问我答 无限次数的。 3、灵感 灵感 点击链接后会提示你如何下载使用。 这个有win版和mac版&#xff0c;点击登陆后&#xff0c;每日都会有30次GPT3/3.5的提问。 4、WebTab 在浏览器插件中…

软文推广效果怎么样?这篇揭晓答案

软文推广是一种常用的网络营销手段&#xff0c;它通过以文章形式发布关于产品、服务或品牌的信息&#xff0c;来引起受众的兴趣和关注。相较于直接宣传广告&#xff0c;软文推广更注重内容的质量和吸引力&#xff0c;能够更好地传递信息并提升用户转化率。本文伯乐网络传媒将探…

易点易动库存管理系统与ERP系统打通,帮助企业实现低值易耗品管理

现今,企业管理日趋复杂,无论是核心经营还是辅助环节,都需要依靠信息化手段来提升效率。而低值易耗品作为企业日常运营中的必需品,其管理也面临诸多挑战。传统做法效率低下,容易出错。如何通过信息化手段实现低值易耗品的高效管理,成为许多企业必顾及的一个课题。 易点易动作为…