tutorial traduccion peliculas app groovy

traduccion - Cómo eliminar valores duplicados de una lista en groovy



groovy traduccion (5)

Tengo una colección de lista de identificación para guardar en la base de datos

if(!session.ids) session.ids = [] session.ids.add(params.id)

y descubrí que esa lista tiene duplicados, como

[1, 2, 4, 9, 7, 10, 8, 6, 6, 5]

Luego quise eliminar todos los duplicados aplicando algo como:

session.ids.removeAll{ //some clousure case }

Solo encontré esto:

http://groovy.codehaus.org/groovy-jdk/java/util/Collection.html


No soy una persona Groovy, pero creo que puedes hacer algo como esto:

[1, 2, 4, 9, 7, 10, 8, 6, 6, 5].unique { a, b -> a <=> b }

¿Has probado session.ids.unique() ?


Qué tal si:

session.ids = session.ids.unique( false )

Actualizar
Diferenciación entre unique() y unique(false) : el segundo no modifica la lista original. Espero que ayude.

def originalList = [1, 2, 4, 9, 7, 10, 8, 6, 6, 5] //Mutate the original list def newUniqueList = originalList.unique() assert newUniqueList == [1, 2, 4, 9, 7, 10, 8, 6, 5] assert originalList == [1, 2, 4, 9, 7, 10, 8, 6, 5] //Add duplicate items to the original list again originalList << 2 << 4 << 10 // We added 2 to originalList, and they are in newUniqueList too! This is because // they are the SAME list (we mutated the originalList, and set newUniqueList to // represent the same object. assert originalList == newUniqueList //Do not mutate the original list def secondUniqueList = originalList.unique( false ) assert secondUniqueList == [1, 2, 4, 9, 7, 10, 8, 6, 5] assert originalList == [1, 2, 4, 9, 7, 10, 8, 6, 5, 2, 4, 10]


Si se pretende que session.ids contenga identificadores únicos, puede hacer lo siguiente:

if(!session.ids) session.ids = [] as Set

Entonces cuando lo haces:

session.ids.add(params.id)

los duplicados no serán agregados.

También puedes usar esta sintaxis:

session.ids << params.id


Use un único

def list = ["a", "b", "c", "a", "b", "c"] println list.unique()

Esto se imprimirá

[a, b, c]


def unique = myList as Set

Convierte ''myList'' en un conjunto. Cuando use clases complejas (autodefinidas), asegúrese de haber pensado en implementar hashCode () y equals () correctamente.