Groovy将列表的平面列表转换为层次结构

时间:2014-07-01 13:42:27

标签: groovy

假设我们在groovy中有一个列表的平面列表,如下所示:

[[id: 1,title: A],[id: 2, title: B],[id: 3, title: C]]

在B层次为A且C为Child to B的层次结构中转换它的最快方法是什么?

我可以通过迭代来做到这一点,但由于groovy非常有创意,我想知道是否有更聪明的方法。

1 个答案:

答案 0 :(得分:2)

如果您不介意改变原始列表及其元素,则可以执行此类操作:

def list = [[id: 1,title: 'A'],[id: 2, title: 'B'],[id: 3, title: 'C']]

list.inject( [:] ) { prev, next ->
  if( prev ) {
      prev.child = next
  }
  next
}

assert list.head() == [id:1, title:'A', child:[id:2, title:'B', child:[id:3, title:'C']]]