我有一个哈希图列表
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个
答案 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