在基于密钥的集合列表中找到某些东西?

时间:2018-12-01 03:13:28

标签: groovy

我是JAVA和Groovy的新手,但是我有以下数据:

“ [[[260000032:32129,1000000001:此客户],[260000032:194571,1000000001:那个客户],[260000032:201432,1000000001:另一个客户]]”

例如,当我搜索“ 32129”时,我想找到“此客户”。

我尝试了很多方法,但是失败了。:/

1 个答案:

答案 0 :(得分:0)

[
    [260000032:32129,  1000000001:"THIS CUSTOMER"],
    [260000032:194571, 1000000001:"THAT CUSTOMER"],
    [260000032:201432, 1000000001:"ANOTHER CUSTOMER"]
]
 .find { it.getAt(260000032) == 32129 }
 .getAt(1000000001)

编辑:我的回答是假设您已经有对象。但是,如果您的数据实际上只是一个非标准格式的字符串(即,它的字符串文字不带引号),则可能需要执行类似Regex解析的操作。

def input = "[[260000032:32129, 1000000001:THIS CUSTOMER], [260000032:194571, 1000000001:THAT CUSTOMER], [260000032:201432, 1000000001:ANOTHER CUSTOMER]]"

(input =~ /\[260000032\:([^\,]+),\s1000000001\:([^\]]+)/)
 .collect { it }
 .collectEntries { [(it[1]): it[2]] }
 .getAt('32129')