我有三个清单:
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 A
将2
a1
a2
和HeaderSubHeaderMapping
由def 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}}
但是我想知道有没有更好的方法来实现这个目标?
答案 0 :(得分:1)
这是我现在可以提出的:
int i=0
def result=[]
[lHeaderList, lHeaderSubHeaderMapping].transpose().collectEntries {it}
.collect {h, t-> t.times {result << "${h}_${lSubHeaderList[i++]}"} }
println result
但我认为可能会进一步完善。