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