Groovy映射在地图值检索中的应用

Groovy映射在地图值检索中的应用,groovy,Groovy,我对Groovy有点陌生,正在努力解决地图地图问题 假设我有一个如下定义的Groovy地图-每个地图条目包括品牌、重量和费用: //每张地图代表品牌、重量和费用 def crankcase = [ ["GM", 22, 37], ["Ford", 221, 400], ["Dodge", 66, 150] ] 我正在寻找最好的方式,能够检索一个给定的地图条目的基础上品牌(通用汽车,福特或道奇)和相关的重量和该品

我对Groovy有点陌生,正在努力解决地图地图问题

假设我有一个如下定义的Groovy地图-每个地图条目包括品牌、重量和费用:

//每张地图代表品牌、重量和费用

def crankcase = [
    ["GM", 22, 37],
    ["Ford", 221, 400],
    ["Dodge", 66, 150]
]
我正在寻找最好的方式,能够检索一个给定的地图条目的基础上品牌(通用汽车,福特或道奇)和相关的重量和该品牌的费用


我将不断地进行查找,因此我认为解决方案是有效的。

您显示的数据结构是而不是地图地图-它是 向量向量(列表列表、数组数组等)。这个 不同之处在于,映射在 值,用
分隔:
。例如,
[品牌:GM,重量:22,费用:37]
是 一张地图

你首先要把它转换成一个地图向量。例如

def crankcase = [
    ["GM", 22, 37],
    ["Ford", 221, 400],
    ["Dodge", 66, 150]
]

def map = crankcase.collect{ [["brand", "weight", "charge"], it].transpose().collectEntries() }

println map
// → [[brand:GM, weight:22, charge:37], 
//    [brand:Ford, weight:221, charge:400], 
//    [brand:Dodge, weight:66, charge:150]]
然后你可以按品牌进行分组,这样你就可以得到一张品牌地图 对案例进行分析

def casesByBrand = map.groupBy{ it.brand }

println casesByBrand

// → [GM:[[brand:GM, weight:22, charge:37]], 
//    Ford:[[brand:Ford, weight:221, charge:400]], 
//    Dodge:[[brand:Dodge, weight:66, charge:150]]]

您显示的数据结构不是地图地图,而是 向量向量(列表列表、数组数组等)。这个 不同之处在于,映射在 值,用
分隔:
。例如,
[品牌:GM,重量:22,费用:37]
是 一张地图

你首先要把它转换成一个地图向量。例如

def crankcase = [
    ["GM", 22, 37],
    ["Ford", 221, 400],
    ["Dodge", 66, 150]
]

def map = crankcase.collect{ [["brand", "weight", "charge"], it].transpose().collectEntries() }

println map
// → [[brand:GM, weight:22, charge:37], 
//    [brand:Ford, weight:221, charge:400], 
//    [brand:Dodge, weight:66, charge:150]]
然后你可以按品牌进行分组,这样你就可以得到一张品牌地图 对案例进行分析

def casesByBrand = map.groupBy{ it.brand }

println casesByBrand

// → [GM:[[brand:GM, weight:22, charge:37]], 
//    Ford:[[brand:Ford, weight:221, charge:400]], 
//    Dodge:[[brand:Dodge, weight:66, charge:150]]]

首先,在您的示例中,它不是地图。达吉特说了什么。您定义了一个包含其他三个列表的列表。没有涉及地图。首先,在您的示例中,它不是地图。达吉特说了什么。您定义了一个包含其他三个列表的列表。没有涉及映射。谢谢…完美…是的,我将列表错误标记为映射:=(…我对Groovy来说相对较新谢谢…完美…是的,我将列表错误标记为映射:=(…我对Groovy来说相对较新