Groovy小组的标准更多

时间:2018-06-07 10:00:20

标签: java list groovy

我有一个哈希图列表

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个

1 个答案:

答案 0 :(得分: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()空值obj.account的空值。

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