【问题标题】:How to assign the key and values using hashmap?如何使用 hashmap 分配键和值?
【发布时间】:2018-01-24 11:03:11
【问题描述】:

比方说,我正在从 excel 中获取数据,我需要映射两件事。

ID 和对应的 Dates,Excel 数据如下所示:-

       ID                             Dates
      N1#N1          2018-10-09,2018-10-10#2018-10-11

实际输出应该是这样的:-

{N1=2018-10-09,2018-10-10} {N1=2018-10-11} 

我试过下面的代码:-

//Fetching from using in soap ui    
String id = context.expand('${Data#ID}')
String dt = context.expand('${Data#Dates}')

List arrId = id.split('#')

def strD

LinkedHashMap < String, String > dateMap= new LinkedHashMap < 
String, String > ()
for(int i=0; i<arrId.size(); i++) {
strD = dt.split("#").asType(List)[i]

dateMap.put(arrId[i],strD)

}

log.info dateMap

谁能帮我解决这个问题?

【问题讨论】:

  • 那是什么语言?它甚至不接近有效的 java 语法
  • 您的代码对我有效/有效。您是否面临一些执行错误?你能提供更多细节吗?
  • 好的,只给ID作为N1。像这样:- N1#N1 .. 它还在工作吗? @Edumelzer
  • 嘿,这实际上是 groovy.. @Stultuske
  • @avidCoder 好的,现在我得到一个只有 N1 和一个日期记录的地图(像这样:([N1:2018-10-11])。在这种情况下,你想要日期吗?合并?

标签: groovy hashmap


【解决方案1】:

试试这个:

def ids = "N1#N1".split('#')
def dts = "2018-10-09,2018-10-10#2018-10-11".split('#')

List<Map> result = (0..ids.size()-1).collect{
   [(ids[it]): dts[it]]
}

assert result == [[N1:"2018-10-09,2018-10-10"], [N1:"2018-10-11"]]

【讨论】:

  • 嘿,这很好.. 我的代码只适用于我的代码.. 我需要 id 为 N1#N1.. 我已经编辑了问题。 (错字)
  • 我给的另一个尝试是,通过导入 org.apache.commons.collections.map.MultiValueMap;并在 dataMap 内部分配.. 但在这里,结果是这样的 - {N1=[2018-10-09,2018-10-10, 2018-10-11]}
  • 地图总是有唯一的键。可能您需要地图列表?更新答案
  • 谢谢.. 成功了,我的代码可以用同样的方式转换吗?
  • 是的,但你需要稍微改变一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 2013-01-27
  • 2013-04-21
  • 2015-05-10
  • 1970-01-01
相关资源
最近更新 更多