Qual è il modo migliore per rimuovere elementi Null da un elenco in Groovy?Rimuovi elementi nulli da un elenco in Groovy
es: [null, 30, null]
vogliono tornare: [30]
Qual è il modo migliore per rimuovere elementi Null da un elenco in Groovy?Rimuovi elementi nulli da un elenco in Groovy
es: [null, 30, null]
vogliono tornare: [30]
qui è una risposta se non volete mantenere la lista
void testRemove() {
def list = [null, 30, null]
list.removeAll([null])
assertEquals 1, list.size()
assertEquals 30, list.get(0)
}
originale in un pratico test di unità da dandy
+1 per la soluzione più leggibile (si legge come: "rimuovere tutti i null") –
Il metodo findAll dovrebbe fare quello che ti serve.
[null, 30, null].findAll {it != null}
+1 per una soluzione che non modifica l'elenco originale –
'[null, 30, null] .findAll {it}' farà. –
Thomas, findAll {it} rimuoverà 0 e null.E se questo è ciò che vuoi allora potresti anche fare un findAll() –
Basta usare meno:
[null, 30, null] - null
Questo sembra semplice e ottimo, e mi ha aiutato –
+1 The migliore risposta! –
Si può anche usare [null, 30, null] .minus (null). Mi sembra più leggibile. La versione con '-' ricorda l'abuso dell'operatore di SBT. –
penso scoprirai che questo è il più breve, supponendo che non ti dispiaccia altri valori "falsi" anche scomparendo:
println([null, 30, null].findAll())
pubblico Collection findAll() trova gli elementi corrispondenti alla chiusura IDENTITÀ (cioè corrispondente alla verità di Groovy). Esempio:
articoli def = [1, 2, 0, falso, vero, '', 'foo', [], [4, 5], null] asserire items.findAll() == [1, 2, vera, 'pippo', [4, 5]]
Semplicemente [null].findAll{null != it}
se it
è null allora restituire false in modo da non esistere in nuova collezione.
'assertEquals [], [0, false, null] .findAll {it}' –
Hai ragione, grazie. –
Questo può essere ottenuto anche da grep:
assert [null, 30, null].grep() == [30]
o
assert [null, 30, null].grep {it} == [30]
o
assert [null, 30, null].grep { it != null } == [30]
Un altro modo per farlo è [null, 20, null].findResults{it}
.
Ciò comporta la rimozione di tutti gli elementi nulli.
myList.removeAll { !it }
Se il numero 0 è nel vostro dominio è possibile controllare contro nullo
myList.removeAll { it == null }
[null, 30, null].grep()
ritorno [30]
http://docs.groovy-lang.org/latest/html/groovy-jdk/java/util/List.html (trovare grep)
Questo sembra un duplicato di https://stackoverflow.com/a/27998063/487033 – doelleri
divertente che nessuno ha chiesto come i null sono finiti nella lista in primo luogo. Sembra che tu stia affrontando il sintomo piuttosto che il problema. – Snekse