用输入数组填充列表

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]]