如何根据用户对象的类型对用户对象列表进行分组。例如,我有一个列表如下。
List userList = [userA, userB, userC, userD, userE, userF, userH]
我想将此列表转换为列表。
List userList = [ [userA, userB], [userC, userD, userE, userF], [userH] ]
根据用户的类型字段进行分组。
答案 0 :(得分:3)
您可以使用groupyBy()
方法:
Map map = users.groupBy { it.type }
返回按类型分组的用户对象的地图。 地图内容如下所示:
[
typeA : [list of users of typeA],
typeB : [list of users of typeB],
..
]
使用collect方法可以轻松地将此地图转换为您需要的列表:
List l = m.collect { key, value -> value }
现在l
是一个如下所示的列表:
[ [list of users of typeA], [list of users of typeB], .. ]
全部在一行:
def list = users.groupBy { it.type } .collect { k, v -> v }
答案 1 :(得分:1)
时髦的善良,只有一行代码: - )
def usersByType = users.groupBy({ it.type }).values().toList()