我有一个哈希映射列表
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个
使用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