groovy

groovy collect



Cómo copiar una lista en Groovy (3)

Está utilizando el operador de propagación ( * ), que está haciendo una lista de cada elemento. Eliminar eso:

list1 = [1, 2, 3] println list1 list2 = list1.collect() assert list2 == [1, 2, 3]

Echa un vistazo a la doc para obtener más información sobre ese método.

Tengo la siguiente lista de Groovy:

l = [1, 2, 3] println(l)

Lo que me da:

[1, 2, 3]

Ahora quiero crear una copia de esta lista:

println(l*.collect())

Pero esto me da lo siguiente:

[[1], [2], [3]]

Aparentemente tengo una lista de listas.
¿Cómo puedo crear una lista de los mismos objetos que en la lista original?


También puedes usar

list1 = [1, 2, 3] println list1 list2 = list1.collect{it} assert list2 == [1, 2, 3]


def list = [1, 2, 4] //by value def clonedList = list.clone() //or list.collect() assert clonedList == list assert !clonedList.is(list) //Reference inequality list.pop() //modify list assert clonedList == [1, 2, 4] assert list == [1, 2] //by reference def anotherList = list assert anotherList == [1, 2] assert anotherList.is(list) //Reference equality list.pop() //modify again assert list == [1] assert anotherList == [1]

Ejecútalo here .