首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Groovy:解析列表元素

Groovy:解析列表元素
EN

Stack Overflow用户
提问于 2022-09-19 12:40:39
回答 2查看 42关注 0票数 -1

为了学习的目的,我喜欢解析如下的查找表:我想检查分支名称并获取相应的名称值,但是我想要获取每个分支的名称,例如:=>:"test“=> name "a”than分支:"test-1“=> name "d”,等等,

代码语言:javascript
运行
复制
LUT = [
    [branch: "test", name: 'a', image_name: 'abc'],
    [branch: "test", name: 'b', image_name: 'abc'],
    [branch: "test", name: 'c', image_name: 'abc'],
    [branch: "test-1", name: 'd', image_name: 'abc'],
    [branch: "test-1", name: 'e', image_name: 'abc'],
    [branch: "test-2", name: 'f', image_name: 'abc'],
    [branch: "test-2", name: 'g', image_name: 'abc'],
    [branch: "test-2", name: 'h', image_name: 'abc'],
    [branch: "test-3", name: 'i', image_name: 'abc'],
    [branch: "test-3", name: 'j', image_name: 'abc'],
    [branch: "test-4", name: 'k', image_name: 'abc'],
    [branch: "test-5", name: 'l', image_name: 'abc'],
]

例如,结果可能如下所示:

代码语言:javascript
运行
复制
result = {
 "test": [{ "name":"a" }],
 "test-1": [{ "name":"d" }],
 "test-2": [{ "name":"f" }],
 "test-3": [{ "name":"i" }], 
"test-4": [{ "name":"k" }], 
"test-5": [{ "name":"l" }], 
} 

另外,稍后我可能会向键添加额外的值,例如test-1:"test-1":{ "name":"a","new_name":"new" }

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-22 15:28:24

我不确定你的花括号,但这会创建一个地图:

代码语言:javascript
运行
复制
def original = [
    [branch: "test", name: 'a', image_name: 'abc'],
    [branch: "test", name: 'b', image_name: 'abc'],
    [branch: "test", name: 'c', image_name: 'abc'],
    [branch: "test-1", name: 'd', image_name: 'abc'],
    [branch: "test-1", name: 'e', image_name: 'abc'],
    [branch: "test-2", name: 'f', image_name: 'abc'],
    [branch: "test-2", name: 'g', image_name: 'abc'],
    [branch: "test-2", name: 'h', image_name: 'abc'],
    [branch: "test-3", name: 'i', image_name: 'abc'],
    [branch: "test-3", name: 'j', image_name: 'abc'],
    [branch: "test-4", name: 'k', image_name: 'abc'],
    [branch: "test-5", name: 'l', image_name: 'abc'],
]

println original
    .groupBy { branch -> branch.branch }
    .collectEntries { key,value -> [(key) : [name : value.get(0).name]] }
票数 0
EN

Stack Overflow用户

发布于 2022-09-19 14:36:52

不是积极的,如何按您的要求格式化结果,但找到每个分支的第一个实例相当容易。

代码语言:javascript
运行
复制
result = [:]
for (map in LUT)
{
    if (!result.containsKey(map['branch']))
    {
        println map['name'] // prints the unique name
        result.put(map['branch'], map['name'])
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73773498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档