2012-07-19 17 views
33
Input >> list = [[1,2,3], [6], [3,4,5,6]] 

Output >> [1,2,3,3,4,5,6,6] 

Voglio sapere se c'è qualcosa di più semplice di questoGroovy metodo di combinare lista di liste

l = [] 
list.each{ l = l + it } 
println l 

come una chiusura Groovy predefinito o metodo?

risposta

61

Prova flatten, vale a dire:

list.flatten() 

Oppure, per ottenere il risultato desiderato:

list = [[1,2,3], [6], [3,4,5,6]] 

assert list.flatten().sort() == [1,2,3,3,4,5,6,6] 
+0

funzionato! SO dice che devo aspettare altri 4 minuti per accettare la risposta :) –

+6

Nota che la semantica di questo è diversa in quanto ricorre attraverso le liste, producendo risultati diversi in situazioni come questa: '[[1,2,3] [4, [5]], [6]]. Appiattisce() '. Il modo più pulito di concatenare l'OP è 'list.collectMany {it}'. – Desty