如果Groovy中存在相同ID的值,则将null替换为value

如果Groovy中存在相同ID的值,则将null替换为value,groovy,Groovy,如果我有一个如下所示的ArrayList: [10aBl,NULL,06/02/2104] [10aBl,100,12/12/2016] [cs30h,845,13/07/2017] [cs30h,845,17/09/2017] [cs30h,NULL,01/02/2013] 如何将第2列中的空值替换为第2列中与id(第1列)匹配的现有值,即 谢谢。需要2分钟的溶液 def a = [ '10aBl,NULL,06/02/2104', '10aBl,100,12/12/2016', 'cs30

如果我有一个如下所示的ArrayList:

[10aBl,NULL,06/02/2104]
[10aBl,100,12/12/2016]
[cs30h,845,13/07/2017]
[cs30h,845,17/09/2017]
[cs30h,NULL,01/02/2013]
如何将第2列中的空值替换为第2列中与id(第1列)匹配的现有值,即


谢谢。

需要2分钟的溶液

def a = [ '10aBl,NULL,06/02/2104', '10aBl,100,12/12/2016', 'cs30h,845,13/07/2017','cs30h,845,17/09/2017','cs30h,NULL,01/02/2013' ].collect{ it.split(',') }

def replacements = a.collectEntries{ 'NULL' != it[ 1 ] ? it[ 0..1 ] : [:] }
a.each{ if( 'NULL' == it[ 1 ] ) it[ 1 ] = replacements[ it[ 0 ] ] }

assert '[[10aBl, 100, 06/02/2104], [10aBl, 100, 12/12/2016], [cs30h, 845, 13/07/2017], [cs30h, 845, 17/09/2017], [cs30h, 845, 01/02/2013]]' == a.toString()

到目前为止,您尝试了什么?它是如何失败的?
def a = [ '10aBl,NULL,06/02/2104', '10aBl,100,12/12/2016', 'cs30h,845,13/07/2017','cs30h,845,17/09/2017','cs30h,NULL,01/02/2013' ].collect{ it.split(',') }

def replacements = a.collectEntries{ 'NULL' != it[ 1 ] ? it[ 0..1 ] : [:] }
a.each{ if( 'NULL' == it[ 1 ] ) it[ 1 ] = replacements[ it[ 0 ] ] }

assert '[[10aBl, 100, 06/02/2104], [10aBl, 100, 12/12/2016], [cs30h, 845, 13/07/2017], [cs30h, 845, 17/09/2017], [cs30h, 845, 01/02/2013]]' == a.toString()