2013-07-04 22 views

risposta

47

io non sono una persona ottimista, ma io credo che si possa fare qualcosa di simile:

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

Hai provato session.ids.unique()?

+0

dice null session.ids è nullo quando lo uso come session.ids = session.ids.unique() e poi lo metto come session.ids? .unique() e alla fine della sessione del giorno. gli ID erano nulli. Primo caso. – danielad

+0

che il personale clouser avrebbe potuto aggiungere più significato alle mie ulteriori operazioni di lista grazie. – danielad

+0

Forse basta usare un Set invece di List – Daniele

26

ne dite:

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

Aggiornamento
differenziazione tra unique() e unique(false): il secondo non modifica la lista originale. Spero possa aiutare.

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] 
+0

funziona bene grazie – danielad

+2

@danielad Cordiali saluti, Se non si desidera mutare l'elenco originale e creare un nuovo elenco ogni volta l'uso 'unico (false)'. L'elenco originale con elementi duplicati viene conservato. :) – dmahapatro

+0

@dmahapatro Non posso credere di averlo dimenticato .... penso che sia stata una delle mie aggiunte alla lingua ;-) lol –

7
def unique = myList as Set 

Converte 'myList' in un set. Quando usi complessi (classi autodefinite) assicurati di aver pensato di implementare hashCode() ed equals() correttamente.

10

Usa unico

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

Questo stamperà

[a, b, c] 
0

Se si prevede che session.ids contengono ID univoci, allora si potrebbe fare:

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

Poi, quando si do:

session.ids.add(params.id) 

duplicati non saranno aggiunti.

Inoltre è possibile utilizzare la seguente sintassi:

session.ids << params.id 
Problemi correlati