gpt4 book ai didi

java - Groovy 按更多标准分组

转载 作者:行者123 更新时间:2023-11-30 02:08:39 26 4
gpt4 key购买 nike

我有一个 HashMap 列表

list=[{帐户:"12345"},{帐户:null},{帐户:"12345"},帐户: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 个 map 列表而不是 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 的 null 值和空值.

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

关于java - Groovy 按更多标准分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50738398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com