I have these invoices listed:def invoices = ['LEDES98BI V2','LINE|INVOICE_DATE|INVOICE_NUMBER|INVOICE_TOTAL','1|20150301|INV-Error_Test1|22','2|20150301|INV-Error_Test1|24','3|20150301|INV-Error_Test2|26','4|20150301|INV-Error_Test2|28,']I am trying to do groupBy on the above collection with INVOICE_NUMBER and trying to achieve map with INVOICE_NUMBER and lines as values:def lines = invoices*.split('\\|').findAll{ it.size()>1 }def heads = lines.first()def invoiceMap =  lines.tail().collect{ [heads, it].transpose().collectEntries() }.groupBy{ it.INVOICE_NUMBER }If I print invoiceMap I get what I intended as this map: [INV-Error_Test1:[[LINE:1, INVOICE_DATE:20150301, INVOICE_NUMBER:INV-Error_Test1, INVOICE_TOTAL:22],                    [LINE:2, INVOICE_DATE:20150301, INVOICE_NUMBER:INV-Error_Test1, INVOICE_TOTAL:24]],   INV-Error_Test2:[[LINE:3, INVOICE_DATE:20150301, INVOICE_NUMBER:INV-Error_Test2, INVOICE_TOTAL:26],                    [LINE:4, INVOICE_DATE:20150301, INVOICE_NUMBER:INV-Error_Test2, INVOICE_TOTAL:28,]]  ]But if the INVOICE_NUMBER has any white spaces with it in the invoices map my code doesn't work, so I tweaked the code as below to get it working: def invLineDetails = lines.tail().collect{ [heads, it].transpose().collectEntries() }.groupBy{it[it.keySet().find{it.contains('INVOICE_NUMBER')}] }Can this code be optimized/refactored further? 
GroupBy field with and without white spaces
collections;groovy