首页 > 其他分享 >实现Map批量赋值,我只需24秒搞定!

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

时间:2023-09-07 18:32:29浏览次数:44  
标签:24 Map 搞定 target keyAndValue 键值 key 赋值

函数的功能是将一组键值对批量赋值给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}

以上对比可以看出: image.png

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

该工具免费使用链接:

标签:24,Map,搞定,target,keyAndValue,键值,key,赋值
From: https://blog.51cto.com/u_15327851/7400251

相关文章

  • LRUCache算法缓存策略(map+doubleLinkedList)
    packagearithmetic;importjava.util.HashMap;publicclassFaceTest81{//LRUcache缓存策略map+双向链表//get、update、put需要时间复杂度达到O1//map+双向链表结构publicFaceTest81(intcapacity){ cache=newMyCache(capacity);}privateMyCache<Integer,Intege......
  • @supermap/iclient-leaflet使用tiledMapLayer报错
    使用leaflet加载超图的时候有时候超图无法加载有时候报如下错误因为手上有好几个项目都在使用leaflet但是同样都使用@supermap/iclient-leaflet(版本11.1.0-a)加载超图,有的项目可行,有的不可行最后打开项目根目录下node_modules里查看@supermap文件夹里的iclient-leafl......
  • 护眼台灯怎么选?解读2024实施新国标!
    GB/T9473-2022《读写作业台灯性能要求》参编单位陪你解读护眼台灯新国标!1. 关注《读写作业台灯性能要求》对普通人来说,有什么样的意义?2. 《读写作业台灯性能要求》2022年相比2017年国标有哪些不同?3. 家长应该关注的3个选灯指标?「怎样避免孩子近视?」是家长们时刻关心的话题。想......
  • day24 - 回溯算法part01
    回溯算法理论基础 77. 组合classSolution{public:vector<vector<int>>result;vector<int>path;voiddfs(intn,intk,intstart){if(path.size()==k){result.push_back(path);return;}......
  • kafka复习:(24)consume-transform-produce模式
    packagecom.cisdi.dsp.modules.metaAnalysis.rest.kafka2023;importorg.apache.kafka.clients.consumer.*;importorg.apache.kafka.clients.producer.KafkaProducer;importorg.apache.kafka.clients.producer.ProducerConfig;importorg.apache.kafka.clients.produc......
  • Redis复习:(1)RedisTempalte之BitMap操作
    packagecn.edu.tju.service.impl;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.dao.DataAccessException;importorg.springframework.data.redis.connection.RedisConnection;importorg.springframework.data.redis.co......
  • map、sync.map、concurrent-map适用场景与源码解析
    最近一直加班,无论工作日还是周末,虽然每天很忙但总感觉空空的,很少有时间停下来思考与总结。项目中各种甩锅,最后最苦逼的还是落到了研发的头上,文档编写、环境部署、问题排查虐得一遍又一遍。事情杂乱,研发效率超级低,不知道何是是个头呀背景在go中,map是最常用的集合之一。其底层key存......
  • 一文搞定,PO设计模式详解
    PO模式:全称:pageobjece,分层机制,让不同层去做不同类型的事情,让代码结构清晰,增加复⽤性。PO模式的优势:1)效率⾼:同理,PO模式的逻辑层⽅法有具体定义,情况和元素发⽣变化⼀样修改逻辑层,业务层不变。这样看来结构简单清晰,舒服更符合⼈类习惯,普通⽅式就是继续堆case。2)复⽤多收益⼤:同样......
  • hibernate怎么实现一个类对象map多个表名
    1)映射文件在一个映射文件中定义class和table的对应关系,用entity-name来区分不同的映射:<class=”MyClass”entity-name=”testA”table=”mytable_A”><propertyname=”name”column=”st_name”/>……</class><class=”MyClass”entity-name=”testB”table=”mytable......
  • Hadoop Map/Reduce教程
    【目的】       这篇教程从用户的角度出发,全面地介绍了HadoopMap/Reduce框架的各个方面。【先决条件】       请先确认Hadoop被正确安装、配置和正常运行中。更多信息见:       Hadoop快速入门对初次使用者。       Hadoop集群搭建对大规模分布式......