如果我有一个看起来像这样的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]
如何用与ID(第1列)匹配的ID的第2列中的现有值替换第2列中的NULL,即
[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]
谢谢。
答案 0 :(得分:0)
一个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()