如何使用集合的groupBy()函数

时间:2014-09-30 19:47:14

标签: grails

我在查询中返回了一些包含userid,name,week,days和project_count的数据 即:

userid, name, week, days  project_count
14,     kirk,  1,    4.75
14,     kirk,  2,    3
14,     kirk,  3,    5 

等一年中的每一周

数据是每个用户每周预订的时间(天)

我正在尝试使用groupby,因此它会按名称对此信息进行分组,并为该组添加周和日 即:

[14, kirk[1,4.74],[2,3],[3,5]]

然后我将使用此数据创建一个显示信息的表。按用户和周列出

名称WK1 WK2 WK 3 WK 4 Wk5 WK6 Wk7

柯克4.75 3 5

不显示id,我只是认为它有助于对数据进行分组。 如果值大于1,则在生成表格时将使用project_count字段以突出显示单元格的背景。我试图发布图像以更好地了解我正在做什么,但我还没有足够的声誉。

picture

1 个答案:

答案 0 :(得分:0)

我会这样做(没有groupBy):

def groupped = data.inject( [:].withDefault{ [] } ){ res, record ->
  //         id         name               week           days
  res[ [ record[ 0 ], record[ 1 ] ] ] << [ record[ 2 ], record[ 3 ] ]
  res
}

在你应该得到的输出:

[
  [ 14, kirk ]:[ [1,4.74],[2,3],[3,5] ] 
]