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 .