Groovy recursive List flattening

def flatten(lst) {
   join([],lst)

}

def join (lsr1,lsr2) {

    lsr2.inject(lsr1) {res,mem->
    
        if (mem instanceof Collection) { 
            join(res,mem)
        }else {
             lsr1 << mem
        } 
    }
} 

//example 
testr = [1,2 ,[3,[4,5,[8,9]]]]
flatten(testr)
//  output
 [1, 2, 3, 4, 5, 8, 9]
Advertisements
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s