Groovy小组的标准更多

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

我有一个哈希映射列表

list=[{account:"12345"},{account:null},{account:"12345"},account:null}]

我正在将它们分组,将这些值帐户分开列表

list.groupBy({obj -> obj.account}).values().toList();

结果是这两个列表:

[{account:"12345"},{account:"12345"}],[{account:null},{account:null}]

这是正确的,但我的问题是,我是否可以保留第一个列表,每次有空值时,我会得到单独的列表,例如

[{account:"12345"},{account:"12345"}],[{account:null}],[{account:null}]

或者换句话说,获得3个地图列表而不是2个

java list groovy
1个回答
2
投票

使用UUID而不是空值

(常规)

def list = [[account:"12345"],[account:null],[account:"12345"],[account:null]]
list.groupBy{obj -> obj.account ?: UUID.randomUUID()}.values().each{println it}

或者只是新的对象

def list=[[account:"12345"],[account:null],[account:"12345"],[account:null]]
list.groupBy{obj -> obj.account ?: new Object()}.values().each{println it}

请注意,obj.account ?: new Object()将返回new Object()为null和空值obj.account

如果您只需要为空值限制表达式,那么使用obj.account==null ? new Object() : obj.account

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