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

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

函数的功能是将一组键值对批量赋值给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依赖包:
//
// org.apache.commons
// commons-lang3
// 3.12.0
//

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 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}

以上对比可以看出:

image.png

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

该工具免费使用链接:https://suo.im/8zzSS

相关文章
|
前端开发 JavaScript API
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(五)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(五)
|
6月前
|
存储 C++ 容器
Map容器-构造和赋值讲解
Map容器-构造和赋值讲解
52 0
|
6月前
|
Java 机器人 开发者
使用Map批量赋值进行表单验证的实践
在Web应用程序中,表单验证是一个必不可少的环节,它可以确保用户提交的数据合法且完整。然而,传统的表单验证方法往往需要手动设置每一个验证规则,这无疑增加了开发者的负担。通过使用Map批量赋值功能,我们可以更高效地将表单数据批量赋值给验证对象,然后根据验证对象的属性进行验证。
|
前端开发 API 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(六)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(六)
|
前端开发 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(四)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(四)
|
前端开发 JavaScript 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(三)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(三)
|
前端开发 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(二)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(二)
|
前端开发 网络架构
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map(一)
ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map
|
资源调度 BI 项目管理
第一章 pandas预备知识(列表推导式与条件赋值、匿名函数与map方法、zip对象与enumerate方法、np基础 )
第一章 pandas预备知识(列表推导式与条件赋值、匿名函数与map方法、zip对象与enumerate方法、np基础 )
151 0
|
前端开发
React工作57:map赋值
React工作57:map赋值
104 0