Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/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中使用groupBy_Groovy - Fatal编程技术网

在Groovy中使用groupBy

在Groovy中使用groupBy,groovy,Groovy,我有一个用户列表 def items = [[name:"tony", age:4], [name:"tony", age: 5], [name:"alan", age:16]] 我想按姓名对他们进行分组,但我只想知道列表中的年龄 ["tony": [4, 5], "alan": [16]] 当我这样做的时候 def groups = items.groupBy {it.name} 我得到: [托尼:[[姓名:托尼,年龄:4],[姓名:托尼,年龄:5],[姓名:艾伦,年龄:16]] 所以还

我有一个用户列表

def items = [[name:"tony", age:4], [name:"tony", age: 5], [name:"alan", age:16]]
我想按姓名对他们进行分组,但我只想知道列表中的年龄

["tony": [4, 5], "alan": [16]]
当我这样做的时候

def groups = items.groupBy {it.name}
我得到: [托尼:[[姓名:托尼,年龄:4],[姓名:托尼,年龄:5],[姓名:艾伦,年龄:16]]

所以还有一点工作要做,以得到我想要的。有什么建议吗?

试试:

def items = [[name:"tony", age:4], [name:"tony", age: 5], [name:"alan", age:16]]
def t = items.groupBy { it.name }.collectEntries { [(it.key):(it.value*.age)] }
assert t == ['tony':[4,5],'alan':[16]]
尝试:


您也可以在1个循环而不是2个循环中完成:

def items = [[name:"tony", age:4], [name:"tony", age: 5], [name:"alan", age:16]]
def groupped = items.inject( [:].withDefault{ [] } ){ res, curr ->
  res[ curr.name ] << curr.age
  res
}
def items=[[姓名:“托尼”,年龄:4],[姓名:“托尼”,年龄:5],[姓名:“艾伦”,年龄:16]]
def groupped=items.inject([:].withDefault{[]}){res,curr->

res[curr.name]您也可以在1个循环而不是2个循环中完成:

def items = [[name:"tony", age:4], [name:"tony", age: 5], [name:"alan", age:16]]
def groupped = items.inject( [:].withDefault{ [] } ){ res, curr ->
  res[ curr.name ] << curr.age
  res
}
def items=[[姓名:“托尼”,年龄:4],[姓名:“托尼”,年龄:5],[姓名:“艾伦”,年龄:16]]
def groupped=items.inject([:].withDefault{[]}){res,curr->
res[curr.name]重复。重复。