Groovy中的列表

时间:2014-03-27 03:47:42

标签: groovy

我有三个清单:
HeaderList : [A, B, C]
SubHeaderList : [a1, a2, b1, b2, b3, c1]
HeaderSubHeaderMapping : [2, 3, 1]

我需要创建一个新列表:[A_a1, A_a2, B_b1, B_b2, B_b3, C_c1]
HeaderSubHeaderMapping给出SubHeaderList中有多少个子标题属于HeaderList中的标题。
例如:Header A2 a1 a2HeaderSubHeaderMappingdef lHeaderList = ["A", "B", "C"] def lSubHeaderList = ["a1", "a2", "b1", "b2", "b3", "c1"] def lHeaderSubHeaderMapping = [2, 3, 1] def lKeyList = [] def lIndex = 0 for(int i = 0; i < lHeaderList.size(); i++) { for(int j = 0; j < lHeaderSubHeaderMapping.get(i); j++) { lKeyList << (lHeaderList.get(i) + "_" + lSubHeaderList.get(lIndex)) lIndex++ } } println lKeyList 指示 我目前正在使用此代码,它为我提供了所需的输出。

{{1}}

但是我想知道有没有更好的方法来实现这个目标?

1 个答案:

答案 0 :(得分:1)

这是我现在可以提出的:

int i=0
def result=[]

[lHeaderList, lHeaderSubHeaderMapping].transpose().collectEntries {it}
    .collect {h, t-> t.times {result << "${h}_${lSubHeaderList[i++]}"} }    

println result

但我认为可能会进一步完善。