You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用HashMap分配键值对?Excel ID与日期映射问题求助

解决SoapUI中ID与重复日期段的映射格式问题

我来帮你梳理下问题所在,以及如何调整代码得到你想要的输出:

问题根源

你原来的代码用了LinkedHashMap,但HashMap的key是唯一的——当你第二次把N1作为key存入时,会直接覆盖第一次的value,所以最后map里只会保留最后一个N1对应的日期,而且map默认的字符串格式也不是你要的{N1=xxx}样式。

修正后的代码

我们不需要用map(因为ID重复),直接把拆分后的ID和日期段一一配对,格式化成目标字符串再拼接即可:

// Fetch data from SoapUI test step
String id = context.expand('${Data#ID}')
String dt = context.expand('${Data#Dates}')

// Split ID and Dates into lists using # as delimiter
List<String> idList = id.split('#') as List<String>
List<String> dateSegments = dt.split('#') as List<String>

// Store each formatted {ID=dates} part
List<String> resultParts = []

// Iterate through each pair of ID and corresponding date segment
for (int i = 0; i < idList.size(); i++) {
    // Format each pair to match your desired output style
    String formattedItem = "{${idList[i]}=${dateSegments[i]}}"
    resultParts.add(formattedItem)
}

// Join all parts with spaces to get the final output
String finalOutput = resultParts.join(' ')

// Log the result
log.info finalOutput

代码说明

  1. 拆分数据:把ID和Dates分别按#拆分成两个列表,得到idList = ["N1", "N1"]和dateSegments = ["2018-10-09,2018-10-10", "2018-10-11"]
  2. 逐个格式化:遍历两个列表的索引,把每个位置的ID和日期段组合成{ID=日期串}的格式
  3. 拼接结果:用空格把所有格式化后的字符串拼接起来,得到你期望的输出:{N1=2018-10-09,2018-10-10} {N1=2018-10-11}

内容的提问来源于stack exchange,提问作者avidCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:22:15