簡體   English   中英

Groovy groupby或映射SQL

[英]Groovy groupby or map for a sql

我寫了以下查詢

def result=GuruActivity.executeQuery("select P.id, P.postBy, P.totalUp from GuruActivity as P where P.totalUp>5")
println result
render "done"

我得到像

[1, AAA, 7], [2, AAA, 10], [3, AAA, 7], [7, BBB, 7], [9, CCC, 7]

現在如何獲取以下格式的P.ID(在地圖中),這里我得到的ID超過5 totalUp

AAA : [1,2,3]
BBB : [7]
CCC : [9]

我該怎么做呢?

一種方法是使用collection的groupBy

def list = [[1, 'AAA', 7], [2, 'AAA', 10], 
           [3, 'AAA', 7], [7, 'BBB', 7], [9, 'CCC', 7]]

assert list.groupBy{it[1]}
           .collectEntries{k, v-> [k, v.collect{it[0]}]} == 
                          ['AAA':[1, 2, 3], 'BBB':[7], 'CCC':[9]]​​​​​​

另一個將被注入

list.inject( [:].withDefault { [] } ) { m, e ->
    m[ e[ 1 ] ] << e[ 0 ]
    m
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM