我有以下列表。格式为[String, Double]
定义数据 = [ [A, 15.2], [A, 14.7], [B, 6.54], [A, 4.5], [A, 16.8], [A, 7.7], [C, 1.5], [B, 13.1],[B,6],[C,10.1]]
我想要一张地图,将每个扇区(字符串)分组为具有多个关联温度(双)的键
我已经能够通过使用 .each 迭代数据来获得我想要的输出
Map<String, List<BigDecimal>> groupedData = new HashMap<>()
data.each {it ->
String sector = it[0]
BigDecimal temp = it[1]
if(!groupedData.containsKey(sector))
{
groupedData.put(sector, [])
}
groupedData.get(sector).add(temp)
}
我是 groovy 的新手,一直试图弄清楚是否可以仅使用集合条目获得相同的输出。我知道 groovy 不需要显式变量声明,但请将它们包含在您的解释中,以便我可以完全理解代码中发生的情况
2 个选项。两者给出相同的结果
def data = [ ['A', 15.2], ['A', 14.7], ['B', 6.54], ['A', 4.5], ['A', 16.8],
['A', 7.7], ['C', 1.5], ['B', 13.1], ['B', 6], ['C', 10.1] ]
println data.groupBy{it[0]}.collectEntries{k,v-> [ k,v.collect{it[1]} ]}
println data.groupBy{it[0]}.collectEntries{k,v-> [ k,v*.get(1)] }