Grails findAll和GroupBy

问题描述 投票:0回答:1

我有一个域类,其中包含3个字段:名称,年龄和城市。我想找到所有受年龄和城市限制的人。到目前为止,这是我的代码:

import groovy.transform.*
@Canonical
class Person{
    String name
    int age
    String city
} 
List<Person> list = [
    new Person('Jey', 42, 'New'),
    new Person('Leo', 25, 'New'),
    new Person('Dan', 29, 'New'),
    new Person('Alex', 36, 'Fran'),
    new Person('Doe', 34, 'Lon'),
    new Person('Tim', 34, 'Lon'),
    new Person('Jin', 34, 'Lon'),
    new Person('Bob', 34, 'Par'),  
    new Person('Ken', 37, 'Par'),    
]
groupByCity = list.findAll{it.age < 36}.groupBy{it.city}.collectEntries{key, value -> [(key): [value.age, value.name]]}
println groupByCity

我需要的是:

[New:[[25,Leo], [29, Dan]], Lon:[[34, Doe], [34, Tim]..

 [New:[[25:Leo], [29: Dan]], Lon:[[34: Doe], [34: Tim]..

但是我知道了>

 [New:[[25, 29], [Leo, Dan]], Lon:[[34, 34, 34], [Doe, Tim, Jin]], Par:[[34], [Bob]]]

上下文:我想按域从域类组中提取对象,并显示两个将这些列表发送到视图。

我有一个域类,其中包含3个字段:名称,年龄和城市。我想找到所有受年龄和城市限制的人。到目前为止,这是我的代码:import groovy.transform。* @Canonical类Person {...

grails groovy group-by findall
1个回答
0
投票

这是因为该值是一个列表,并且[value.age, value.name]导致[[25, 29], [Leo, Dan]] ..

© www.soinside.com 2019 - 2024. All rights reserved.