【问题标题】:Filling list with input arrays用输入数组填充列表
【发布时间】:2017-09-13 23:58:58
【问题描述】:

我在 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 在这种情况下无关紧要。

够清楚吗?

【问题讨论】:

  • “够清楚吗?” 不是,不是。您有什么(示例输入),您需要什么(示例输出),您尝试了什么,遇到了什么问题?
  • 好的,您想将输入重组为[oid1,task1,start1,end1,realstart1,realend1] 格式,但它最初是什么样子的?
  • 最初就像:List&lt;int&gt; oid, List&lt;String&gt; task, List&lt;Timestamp&gt; start 等等。所以它是每个属性的列表。想象一下这些是数组,我需要输出如下:{ oid[0],task[0],start[0]...}{ oid[1],task[1],start[1]..} ..

标签: arrays list object groovy each


【解决方案1】:

要组合列表列表的每个第 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]]

【讨论】:

  • 有趣不知道那个方法:)
【解决方案2】:

像这样尝试。
输入(根据您的评论):

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-22
    • 2015-03-30
    • 2013-05-11
    • 2019-04-14
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2010-11-10
    相关资源
    最近更新 更多