用输入数组填充列表
Filling list with input arrays
我在 groovy 中遇到列表问题,我的脚本有以下输入
我的要求是将我的输入放入列表中,就像用户在此处提供的以下示例:
final int OID = 0
final int TASK = 1
final int START = 2
final int END = 3
final int REALSTART = 4
final int REALEND = 5
List<Object[]> input = [
[ 'oid', 'task', 10, 20, 11, 25 ],
[ 'oid2', 'task2', 25, 50, null, null ]
]
List<List> output = [ ]
input.each { row ->
output << [ row[ OID ], row[ TASK ], row[ START ], row[ END ] ]
if ( row[ REALSTART ] && row[ REALEND ] ) {
output << [ row[ OID ], row[ TASK ] + '_Real', row[ REALSTART ], row[ REALEND ] ]
}
}
我的问题是输入列表部分,我不知道如何像示例那样填充它,所以我的输入列表结果是:
[oid1,task1,start1,end1,realstart1,realend1]
[oid2,task2,start2,end2,realstart2,realend2]
[oid3,task3,start3,end3,realstart3,realend3]
[oid4,task4,start4,end4,realstart4,realend4]
[oid5,task5,start5,end5,realstart5,realend5]
使用我给定的输入值。 timeNow
在这种情况下无关紧要。
够清楚了吗?
像这样尝试。
输入(根据您的评论):
def oids = ["oid1","oid2","oid3","oid4","oid5"];
def tasks = ["task1","task2","task3","task4","task5"];
def starts = ["start1","start2","start3","start4","start5"];
def ends = ["end1","end2","end3","end4","end5"];
def realstart1s = ["realstart11","realstart12","realstart13","realstart14","realstart15"];
def realend1s = ["realend11","realend12","realend13","realend14","realend15"];
算法:
def result = [];
oids.size().times{
result << [oids[it], tasks[it], starts[it], ends[it], realstart1s[it], realend1s[it]]
}
输出:
[
[oid1, task1, start1, end1, realstart11, realend11],
[oid2, task2, start2, end2, realstart12, realend12],
[oid3, task3, start3, end3, realstart13, realend13],
[oid4, task4, start4, end4, realstart14, realend14],
[oid5, task5, start5, end5, realstart15, realend15]
]
要组合列表列表的每个第 n 个元素,groovy 具有 transpose
函数:
[["oid1","oid2","oid3","oid4","oid5"],
["task1","task2","task3","task4","task5"],
["start1","start2","start3","start4","start5"],
["end1","end2","end3","end4","end5"],
["realstart11","realstart12","realstart13","realstart14","realstart15"],
["realend11","realend12","realend13","realend14","realend15"],].transpose()
// [[oid1, task1, start1, end1, realstart11, realend11], [oid2, task2, start2, end2, realstart12, realend12], [oid3, task3, start3, end3, realstart13, realend13], [oid4, task4, start4, end4, realstart14, realend14], [oid5, task5, start5, end5, realstart15, realend15]]
我在 groovy 中遇到列表问题,我的脚本有以下输入
我的要求是将我的输入放入列表中,就像用户在此处提供的以下示例:
final int OID = 0
final int TASK = 1
final int START = 2
final int END = 3
final int REALSTART = 4
final int REALEND = 5
List<Object[]> input = [
[ 'oid', 'task', 10, 20, 11, 25 ],
[ 'oid2', 'task2', 25, 50, null, null ]
]
List<List> output = [ ]
input.each { row ->
output << [ row[ OID ], row[ TASK ], row[ START ], row[ END ] ]
if ( row[ REALSTART ] && row[ REALEND ] ) {
output << [ row[ OID ], row[ TASK ] + '_Real', row[ REALSTART ], row[ REALEND ] ]
}
}
我的问题是输入列表部分,我不知道如何像示例那样填充它,所以我的输入列表结果是:
[oid1,task1,start1,end1,realstart1,realend1]
[oid2,task2,start2,end2,realstart2,realend2]
[oid3,task3,start3,end3,realstart3,realend3]
[oid4,task4,start4,end4,realstart4,realend4]
[oid5,task5,start5,end5,realstart5,realend5]
使用我给定的输入值。 timeNow
在这种情况下无关紧要。
够清楚了吗?
像这样尝试。
输入(根据您的评论):
def oids = ["oid1","oid2","oid3","oid4","oid5"];
def tasks = ["task1","task2","task3","task4","task5"];
def starts = ["start1","start2","start3","start4","start5"];
def ends = ["end1","end2","end3","end4","end5"];
def realstart1s = ["realstart11","realstart12","realstart13","realstart14","realstart15"];
def realend1s = ["realend11","realend12","realend13","realend14","realend15"];
算法:
def result = [];
oids.size().times{
result << [oids[it], tasks[it], starts[it], ends[it], realstart1s[it], realend1s[it]]
}
输出:
[
[oid1, task1, start1, end1, realstart11, realend11],
[oid2, task2, start2, end2, realstart12, realend12],
[oid3, task3, start3, end3, realstart13, realend13],
[oid4, task4, start4, end4, realstart14, realend14],
[oid5, task5, start5, end5, realstart15, realend15]
]
要组合列表列表的每个第 n 个元素,groovy 具有 transpose
函数:
[["oid1","oid2","oid3","oid4","oid5"],
["task1","task2","task3","task4","task5"],
["start1","start2","start3","start4","start5"],
["end1","end2","end3","end4","end5"],
["realstart11","realstart12","realstart13","realstart14","realstart15"],
["realend11","realend12","realend13","realend14","realend15"],].transpose()
// [[oid1, task1, start1, end1, realstart11, realend11], [oid2, task2, start2, end2, realstart12, realend12], [oid3, task3, start3, end3, realstart13, realend13], [oid4, task4, start4, end4, realstart14, realend14], [oid5, task5, start5, end5, realstart15, realend15]]