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

news2024/11/17 13:54:47

函数的功能是将一组键值对批量赋值给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.coloradmin.cn/o/984364.html

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

相关文章

VR全景广告——实体商家的营销新选择

前几年&#xff0c;大家出行不便&#xff0c;那个时候实体商家整天苦恼于没有客户&#xff0c;没有销量&#xff0c;一直到引入VR全景广告才算是有所好转。随着VR全景技术不断完善&#xff0c;许多行业、领域开始结合VR全景&#xff0c;例如景区、房地产、车企等都会利用VR全景…

如何防止僵尸 API...

人们越来越依赖Web API。2023 年 Postman API 状况报告发现&#xff0c;整整 92% 的组织计划在明年增加对 API 的投资。API 正在为从内部微服务策略到合作伙伴策略和成熟产品的一切提供动力。 然而&#xff0c;这种新发现的API 蔓延带来了后果&#xff1b;迫在眉睫的威胁可能会…

CSS:屏幕正中间有个元素A,元素A中有文字A,随着屏幕宽度的增加

始终需要满足以下条件&#xff1a; A元素垂直居中于屏幕***&#xff1b;A元素距离屏幕左右边距各10px&#xff1b;A元素里面的文字”A”的font-size:20px&#xff1b;水平垂直居中;A元素的高度始终是A元素宽度的50%; (如果搞不定可以实现为A元素的高度固定为200px;)请用 html及…

【产线故障】线上接口请求过慢如何排查?

文章目录 前言一、内存使用过高导致CPU满载案例代码分析思路 二、出现了类似死循环导致cpu负载案例代码分析思路 三、死锁案例代码分析思路 前言 首先线上接口变慢&#xff0c;原因可能有很多&#xff0c;有可能是网络&#xff0c;有可能是慢 SQL&#xff0c;有可能是服务本身…

3种轻量化框架总结

一般的卷积神经网络的参数量和计算量都很大&#xff0c;很难应用在资源有限的场景中。为了解决这个问题&#xff0c;通常是在训练好的模型上进行优化&#xff0c;如通过对模型压缩减少计算量和存储成本&#xff0c;也可以通过剪枝连接方法去掉了不重要的神经元连接或者通道修剪…

SecureCRT9.1高亮配色设置

参考:http://zh-cjh.com/qita/1623.html https://download.csdn.net/download/qq_45698138/88310255?spm1001.2014.3001.5503 1.创建文件colorful-network.ini,添加如下内容 D:"Match Case"00000000 D:"Regex Line Mode"00000000 Z:"Keyword Lis…

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

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

微信小程序开发---基本组件的使用

目录 一、scroll-view &#xff08;1&#xff09;作用 &#xff08;2&#xff09;用法 二、swiper和swiper-item &#xff08;1&#xff09;作用 &#xff08;2&#xff09;用法 三、text &#xff08;1&#xff09;作用 &#xff08;2&#xff09;使用 四、rich-tex…

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

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

如何解决基因行业海量数据传输难题?镭速传输给出答案

基因大数据是指通过基因测序、分析和应用所产生的海量数据&#xff0c;它揭示了生命的奥秘和规律&#xff0c;对于科学研究、医疗健康、生物产业等领域具有重要的价值和意义。 随着高通量测序技术的进步&#xff0c;基因大数据的产量呈现爆炸式增长&#xff0c;预计到 2025 年…

算法笔记--最大连续1的个数Ⅲ

leetcode题目链接:1004. 最大连续1的个数 III 题目描述 给定一个二进制数组 nums 和一个整数 k&#xff0c;如果可以翻转最多 k 个 0 &#xff0c;则返回 数组中连续 1 的最大个数 。 思路 这里可以转换思路&#xff0c;让题意更加明确:即&#xff0c;求一个最大连续区间…

pip安装报HTTPSConnectionPool错误解决方案

报错&#xff1a; 解决方案&#xff1a;添加-i https://pypi.tuna.tsinghua.edu.cn/simple/&#xff0c;这里是https&#xff0c;而不是http&#xff0c;网上很多为pip install gradio -i http://pypi.tuna.tsinghua.edu.cn/simple/导致未能成功。 正确为&#xff1a; pip in…

多元共进|2023 Google 开发者大会主旨演讲亮点回顾

2023 Google 开发者大会 今日正式拉开帷幕 一起回顾主旨演讲精华内容 收获技术新知&#xff0c;实现多元共进&#xff01; 主旨演讲亮点合集速览 &#xff08;KN recap视频&#xff09; 扫码前往官网 查看主旨演讲完整回放 Google 大中华区总裁陈俊廷首先上台分享&#x…

rrweb入门

rrweb 背景 rrweb 是 record and replay the web&#xff0c;是当下很流行的一个录制屏幕的开源库。与我们传统认知的录屏方式&#xff08;如 WebRTC&#xff09;不同的是&#xff0c;rrweb 录制的不是真正的视频流&#xff0c;而是一个记录页面 DOM 变化的 JSON 数组&#x…

文件上传漏洞-upload靶场13-16关 (图片木马-文件包含与文件上次漏洞)

文件上传漏洞-upload靶场13-16关 &#xff08;图片木马-文件包含与文件上次漏洞&#xff09; 简介 upload靶场到了第十三关&#xff0c;难度就直线上升了&#xff0c;在最后这7关中&#xff0c;包含了图片木马、竞争条件等上传技巧&#xff0c;这些漏洞的本质&#xff0c;都是…

算法:数组常见套路1---双指针、取模、打擂台法

一、数组的合并–双指针[快慢指针] 1、题目&#xff1a; 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺…

MybatisPlus(3)

前言&#x1f36d; ❤️❤️❤️SSM专栏更新中&#xff0c;各位大佬觉得写得不错&#xff0c;支持一下&#xff0c;感谢了&#xff01;❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 一、查询投影&#x1f36d; 查询投影是指在查询操作中&#xff0c;只选择…

管理类联考——数学——汇总篇——知识点突破——数据分析——计数原理——排列组合——单排与环排

&#x1f451; 公式&#xff1a;—般地&#xff0c;n个不同元素作圆形排列&#xff0c;坐成圆形没有首尾之分&#xff0c;所以固定一人&#xff0c;共有 ( n − 1 ) ! (n-1)! (n−1)!种排法。如果从n个不同元素中取出m个元素作圆形排列共有 1 m C n m \frac{1}{m}C_n^m m1​Cn…

Windows Server 系统各版本及授权说明(附下载地址

本文为Windows Server系统各版本差异对比及授权说明。 会对相关目前仍主流使用的相关Windows Server系统版本和相关授权进行对比和功能说明。 WindowsServer2012 R2 Windows Server 2012 R2授权方式是按照物理CPU数量进行授权&#xff0c;比如物理服务器CPU插槽数量2&#xff…

企业数字化神经网络

随着数字化时代的到来&#xff0c;数据已经成为企业战略性资源和重要的生产要素。企业数字化转型的核心是充分开发和利用数据资源&#xff0c;以数据为驱动&#xff0c;对业务流程进行重构与创新&#xff0c;从而提升企业的核心竞争力。业务系统是企业数据资源的源头&#xff0…