Groovy 要映射的映射列表不工作

Groovy 要映射的映射列表不工作,groovy,Groovy,我有一张地图 [“名称1”:[“字段1”:值1,“字段2”:值2,“字段3”:值3], “名称2”:[“字段1:值4”,“字段2:值5”,“字段3:值6], “名称3”:[“字段1”:值7,“字段2”:值8,“字段3”:值9]] 和一份清单 [名称1,名称3] 我想要一个结果 [“名称1”:[“字段1”:值1,“字段2”:值2,“字段3”:值3], “名称3”:[“字段1”:值7,“字段2”:值8,“字段3”:值9]] 使用的代码 result = recomendationOffers.inj

我有一张地图

[“名称1”:[“字段1”:值1,“字段2”:值2,“字段3”:值3], “名称2”:[“字段1:值4”,“字段2:值5”,“字段3:值6], “名称3”:[“字段1”:值7,“字段2”:值8,“字段3”:值9]]

和一份清单

[名称1,名称3]

我想要一个结果

[“名称1”:[“字段1”:值1,“字段2”:值2,“字段3”:值3], “名称3”:[“字段1”:值7,“字段2”:值8,“字段3”:值9]]

使用的代码

result = recomendationOffers.inject( [:] ) { m, v ->
                if( !m[ v ] ) {
                    m[ v ] = []
                }
                m[ v ] << tariffRecMap[ v.toString() ]
                m
                }
result=recomendationOffers.inject([:]){m,v->
如果(!m[v]){
m[v]=[]
}
m[v]
现在名称1的数据类型从Varchar2(35)更改为数字(10)……同时,1000000959等值显示为1.000000959E9,这有什么区别吗

是的,世界上所有的差异都存在。这意味着您正在将一个
双精度
(很可能)转换为
字符串
,并且由于字符串
“1000000959”
不等于
“1.000000959E9”
,因此您无法获得匹配项

不确定哪些位是双精度位,哪些位是字符串……也许你可以用一个实际的例子来展开

此外,您的注入方法可以替换为:

def result = tariffRecMap.subMap( recomendationOffers )

您好,Tim,谢谢您的回复。这对1.5.6版有效吗?或者我应该使用一些字符串转换吗?@user3433227您是否更改了用户名?
subMap
已经存在。我不确定您有什么,或者您需要什么,因为问题中没有类似的双精度,这只是一个工作示例Hi Tim,我无法访问我的previo美国帐户:-(因此必须创建一个新帐户。我将从我的末端开始尝试,如果尝试不成功,我将返回给您。CheersHi Tim,我如何在groovy中将1.000000959E9转换为1000000959?可能我将用我的值编辑我的问题…嗨,Tim,用原始值编辑了问题,请看一看