Shahar
Shahar

Reputation: 501

Groovy from 2nd dimentional array to 1 dimentional as string with prefix

I have an 2 dimentional array:

def test = [[88,3,2],[22,33,4],[88,3,3]]
test.sort

what i need now is to create each item into string and prefix it with string "test-" so the end result would ne one dimentional array: def endResult = ["test-88.3.2"],["test-88.3.3"],["test-22.33.4"]

if i do:

test.each {println it.join(".")}

it prints the first part but as written i need to save it and add prefix im new to groovy any help would be great

Upvotes: 2

Views: 60

Answers (1)

Szymon Stepniak
Szymon Stepniak

Reputation: 42224

The each method does not produce any result - it only iterates the input collection and allows you to do something with each element (e.g. print it to the console like in the example you showed in your question.)

If you want to manipulate each element of the collection and store it as a new collection, you can use the collect method which also takes a closure as a parameter. This closure is applied to each element of the input collection, and the return value of this closure is used to return a new collection from the collect method.

Something like this should do the trick for you:

def test = [[88,3,2],[22,33,4],[88,3,3]]

def endResult = test.collect { 'test-' + it.join('.') }

println endResult // [test-88.3.2, test-22.33.4, test-88.3.3]

It's worth mentioning that the closure we passed to the collect method uses so-called implicit return - there is no return keyword, but the value it produces from 'test-' + it.join('.') is returned implicitly.

Upvotes: 2

Related Questions