Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy:计算子字符串在字符串中出现次数的最简单方法_Groovy - Fatal编程技术网

Groovy:计算子字符串在字符串中出现次数的最简单方法

Groovy:计算子字符串在字符串中出现次数的最简单方法,groovy,Groovy,如果给定此字符串: [[name:11PUB2, carrier:AA, cost:326.99], [name:FRED, carrier:AS, cost:326.99], [name:11PUB2, carrier:UA, cost:326.99], [name:FRED, carrier:AA, cost:333.99], [name:11PUB2, carrier:UA, cost:334.99], [name:11PUB2, carrier:AA, cost:338.99], [n

如果给定此字符串:

 [[name:11PUB2, carrier:AA, cost:326.99], [name:FRED, carrier:AS, cost:326.99], [name:11PUB2, carrier:UA, cost:326.99], [name:FRED, carrier:AA, cost:333.99], [name:11PUB2, carrier:UA, cost:334.99], [name:11PUB2, carrier:AA, cost:338.99], [name:11PUB2, carrier:WN, cost:339.99], [name:11PUB2, carrier:WN, cost:339.99], [name:11PUB2, carrier:WN, cost:343.99], [name:11PUB2, carrier:B6, cost:361.99], [name:11PUB2, carrier:WN, cost:409.99], [name:11PUB2, carrier:AA, cost:478.99], [name:11PUB2, carrier:SY, cost:498.99], [name:FRED, carrier:AS, cost:534.99], [name:11PUB2, carrier:AA, cost:573.99], [name:11PUB2, carrier:AA, cost:579.99], [name:11PUB2, carrier:AA, cost:579.99], [name:11PUB2, carrier:AA, cost:594.99], [name:11PUB2, carrier:AA, cost:598.99], [name:11PUB2, carrier:AA, cost:598.99], [name:11PUB2, carrier:AA, cost:598.99], [name:11PUB2, carrier:AA, cost:598.99], [name:11PUB2, carrier:UA, cost:600.99], [name:11PUB2, carrier:SY, cost:623.99], [name:11PUB2, carrier:0M, cost:664.99], [name:11PUB2, carrier:AS, cost:710.99], [name:11PUB2, carrier:AA, cost:720.99], [name:11PUB2, carrier:UA, cost:731.99], [name:11PUB2, carrier:UA, cost:745.99], [name:11PUB2, carrier:UA, cost:755.99], [name:11PUB2, carrier:UA, cost:755.99], [name:11PUB2, carrier:WN, cost:804.99], [name:11PUB2, carrier:AA, cost:816.99], [name:FRED, carrier:UA, cost:839.99], [name:11PUB2, carrier:B6, cost:843.99], [name:11PUB2, carrier:UA, cost:867.99], [name:11PUB2, carrier:UA, cost:889.99], [name:11PUB2, carrier:UA, cost:889.99], [name:11PUB2, carrier:UA, cost:948.99], [name:11PUB2, carrier:B6, cost:987.99], [name:11PUB2, carrier:UA, cost:1008.99], [name:11PUB2, carrier:UA, cost:1024.99], [name:FRED, carrier:UA, cost:1024.99], [name:11PUB2, carrier:WN, cost:1027.99]]

查找字符串中每个名称的载波总数的最简单方法是什么?每个名字的最低成本又如何?

直截了当地说:

def rows= [["name":"11PUB2", "carrier":"AA", "cost":326.99], ["name":"FRED", "carrier":"AS", "cost":326.99], ["name":"11PUB2", "carrier":"UA", "cost":326.99]]
def ret = rows.groupBy{it.name}.collectEntries{
    [
        it.key, 
        [
            count: it.value.size(),
            minCost: it.value.sort{it.cost}[0],
        ]
    ]
}

println ret
def rows= [[name:'11PUB2', carrier:'AA', cost:326.99], [name:'FRED', carrier:'AS', cost:326.99], [name:'11PUB2', carrier:'UA', cost:326.99], [name:'FRED', carrier:'AA', cost:333.99], [name:'11PUB2', carrier:'UA', cost:334.99], [name:'11PUB2', carrier:'AA', cost:338.99], [name:'11PUB2', carrier:'WN', cost:339.99], [name:'11PUB2', carrier:'WN', cost:339.99], [name:'11PUB2', carrier:'WN', cost:343.99], [name:'11PUB2', carrier:'B6', cost:361.99], [name:'11PUB2', carrier:'WN', cost:409.99], [name:'11PUB2', carrier:'AA', cost:478.99], [name:'11PUB2', carrier:'SY', cost:498.99], [name:'FRED', carrier:'AS', cost:534.99], [name:'11PUB2', carrier:'AA', cost:573.99], [name:'11PUB2', carrier:'AA', cost:579.99], [name:'11PUB2', carrier:'AA', cost:579.99], [name:'11PUB2', carrier:'AA', cost:594.99], [name:'11PUB2', carrier:'AA', cost:598.99], [name:'11PUB2', carrier:'AA', cost:598.99], [name:'11PUB2', carrier:'AA', cost:598.99], [name:'11PUB2', carrier:'AA', cost:598.99], [name:'11PUB2', carrier:'UA', cost:600.99], [name:'11PUB2', carrier:'SY', cost:623.99], [name:'11PUB2', carrier:'0M', cost:664.99], [name:'11PUB2', carrier:'AS', cost:710.99], [name:'11PUB2', carrier:'AA', cost:720.99], [name:'11PUB2', carrier:'UA', cost:731.99], [name:'11PUB2', carrier:'UA', cost:745.99], [name:'11PUB2', carrier:'UA', cost:755.99], [name:'11PUB2', carrier:'UA', cost:755.99], [name:'11PUB2', carrier:'WN', cost:804.99], [name:'11PUB2', carrier:'AA', cost:816.99], [name:'FRED', carrier:'UA', cost:839.99], [name:'11PUB2', carrier:'B6', cost:843.99], [name:'11PUB2', carrier:'UA', cost:867.99], [name:'11PUB2', carrier:'UA', cost:889.99], [name:'11PUB2', carrier:'UA', cost:889.99], [name:'11PUB2', carrier:'UA', cost:948.99], [name:'11PUB2', carrier:'B6', cost:987.99], [name:'11PUB2', carrier:'UA', cost:1008.99], [name:'11PUB2', carrier:'UA', cost:1024.99], [name:'FRED', carrier:'UA', cost:1024.99], [name:'11PUB2', carrier:'WN', cost:1027.99]]

def stats = rows.inject( [:].withDefault{ [ minCost:Double.MAX_VALUE, freqs:[:].withDefault{ 0 } ] } ){ res, it ->
  res[ it.name ].freqs[ it.carrier ]++
  res[ it.name ].minCost = Math.min res[ it.name ].minCost, it.cost
  res
}

assert '[11PUB2:[minCost:326.99, freqs:[AA:13, UA:13, WN:6, B6:3, SY:2, 0M:1, AS:1]], FRED:[minCost:326.99, freqs:[AS:2, AA:1, UA:2]]]' == stats.toString()

直截了当地说:

def rows= [[name:'11PUB2', carrier:'AA', cost:326.99], [name:'FRED', carrier:'AS', cost:326.99], [name:'11PUB2', carrier:'UA', cost:326.99], [name:'FRED', carrier:'AA', cost:333.99], [name:'11PUB2', carrier:'UA', cost:334.99], [name:'11PUB2', carrier:'AA', cost:338.99], [name:'11PUB2', carrier:'WN', cost:339.99], [name:'11PUB2', carrier:'WN', cost:339.99], [name:'11PUB2', carrier:'WN', cost:343.99], [name:'11PUB2', carrier:'B6', cost:361.99], [name:'11PUB2', carrier:'WN', cost:409.99], [name:'11PUB2', carrier:'AA', cost:478.99], [name:'11PUB2', carrier:'SY', cost:498.99], [name:'FRED', carrier:'AS', cost:534.99], [name:'11PUB2', carrier:'AA', cost:573.99], [name:'11PUB2', carrier:'AA', cost:579.99], [name:'11PUB2', carrier:'AA', cost:579.99], [name:'11PUB2', carrier:'AA', cost:594.99], [name:'11PUB2', carrier:'AA', cost:598.99], [name:'11PUB2', carrier:'AA', cost:598.99], [name:'11PUB2', carrier:'AA', cost:598.99], [name:'11PUB2', carrier:'AA', cost:598.99], [name:'11PUB2', carrier:'UA', cost:600.99], [name:'11PUB2', carrier:'SY', cost:623.99], [name:'11PUB2', carrier:'0M', cost:664.99], [name:'11PUB2', carrier:'AS', cost:710.99], [name:'11PUB2', carrier:'AA', cost:720.99], [name:'11PUB2', carrier:'UA', cost:731.99], [name:'11PUB2', carrier:'UA', cost:745.99], [name:'11PUB2', carrier:'UA', cost:755.99], [name:'11PUB2', carrier:'UA', cost:755.99], [name:'11PUB2', carrier:'WN', cost:804.99], [name:'11PUB2', carrier:'AA', cost:816.99], [name:'FRED', carrier:'UA', cost:839.99], [name:'11PUB2', carrier:'B6', cost:843.99], [name:'11PUB2', carrier:'UA', cost:867.99], [name:'11PUB2', carrier:'UA', cost:889.99], [name:'11PUB2', carrier:'UA', cost:889.99], [name:'11PUB2', carrier:'UA', cost:948.99], [name:'11PUB2', carrier:'B6', cost:987.99], [name:'11PUB2', carrier:'UA', cost:1008.99], [name:'11PUB2', carrier:'UA', cost:1024.99], [name:'FRED', carrier:'UA', cost:1024.99], [name:'11PUB2', carrier:'WN', cost:1027.99]]

def stats = rows.inject( [:].withDefault{ [ minCost:Double.MAX_VALUE, freqs:[:].withDefault{ 0 } ] } ){ res, it ->
  res[ it.name ].freqs[ it.carrier ]++
  res[ it.name ].minCost = Math.min res[ it.name ].minCost, it.cost
  res
}

assert '[11PUB2:[minCost:326.99, freqs:[AA:13, UA:13, WN:6, B6:3, SY:2, 0M:1, AS:1]], FRED:[minCost:326.99, freqs:[AS:2, AA:1, UA:2]]]' == stats.toString()

我觉得那像一张地图。这真的是一个字符串吗?可以对地图或字符串进行处理,以更有效的为准。我认为他的观点是问题与摘要不符。也许它应该被编辑。我觉得那像一张地图。这真的是一个字符串吗?可以对地图或字符串进行处理,以更有效的为准。我认为他的观点是问题与摘要不符。也许它应该被编辑。我想我需要一个更新版本的groovy来工作。我想我需要一个更新版本的groovy来工作。