如何用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
代码说明
- 拆分数据:把ID和Dates分别按
#拆分成两个列表,得到idList = ["N1", "N1"]和dateSegments = ["2018-10-09,2018-10-10", "2018-10-11"] - 逐个格式化:遍历两个列表的索引,把每个位置的ID和日期段组合成
{ID=日期串}的格式 - 拼接结果:用空格把所有格式化后的字符串拼接起来,得到你期望的输出:
{N1=2018-10-09,2018-10-10} {N1=2018-10-11}
内容的提问来源于stack exchange,提问作者avidCoder
相关产品推荐
相关产品推荐

