【发布时间】:2014-03-11 12:48:11
【问题描述】:
我们有以下相同类型的 Parent 和 Child 对象的遗留数据结构
Parent1(name1,code1,null)
Child11(name11,code11,Parent1)
Child12(name12,code12,Parent1)
Parent2(name2,code2,null)
Child21(name21,code21,Parent2)
Child22(name22,code22,Parent2)
etc.
我们有一个旧服务可用,它返回一个包含所有子对象的集合。不返回 Parent 对象,但我们可以为 Set 中的特定 Child 调用 getParent() getter 以获取其 Parent。我们需要从 Groovy 类中调用此服务,然后构建反映原始结构的 Map
def dataMap = [data:[["name":"name1", "code":"code1",
"children":[["name":"name11", "code":"code11"],
["name":"name12", "code":"code12"]]],
["name":"name2", "code":"code2",
"children":[["name":"name21", "code":"code21"],
["name":"name22", "code":"code22"]]]]]
所以基本上 Map 键是父(名称,代码)对,值是各个子对象的(名称,代码)对的列表(地图实际上随后会呈现为 JSON)
作为 Groovy 的新手,我可能可以使用 Java 语法解决这个问题,但我想知道是否有使用 Groovy 特定功能的更简洁的解决方案?任何想法表示赞赏
【问题讨论】:
-
子节点可以有子节点吗? (即:树可以比一层更深)。另外,你有什么物品?您是否只有一个包含所有孩子和父母的列表?
-
1.不,孩子们没有其他孩子,所以树 2 中没有更多级别。我不确定我是否正确理解了这个问题,但我们只有提到的遗留方法可用,它返回所有孩子的集合树中的对象;我们必须在该 Set 上循环并使用 childXY.getParent() 来确定特定 Child 的 Parent 来构建 Map
-
那么你有一个方法可以返回一棵深树的所有叶子节点?
标签: collections map groovy set