Каков наилучший способ удаления нулевых элементов из списка в Groovy?
ex: [null, 30, null]
хотите вернуться: [30]
Каков наилучший способ удаления нулевых элементов из списка в Groovy?
ex: [null, 30, null]
хотите вернуться: [30]
вот ответ, если вы не хотите сохранить исходный список
void testRemove() {
def list = [null, 30, null]
list.removeAll([null])
assertEquals 1, list.size()
assertEquals 30, list.get(0)
}
в удобном dandy unit test
Просто используйте минус:
[null, 30, null] - null
Метод findAll должен делать то, что вам нужно.
[null, 30, null].findAll {it != null}
Я думаю, вы обнаружите, что это кратчайший, предполагая, что вы не возражаете против других "ложных" значений, также исчезающих:
println([null, 30, null].findAll())
public Collection findAll() Поиск элементов, соответствующих IDENTITY Закрытие (т.е. Соответствие истине Groovy). Пример:
def items = [1, 2, 0, false, true, '', 'foo', [], [4, 5], null] assert items.findAll() == [1, 2, true, 'foo', [4, 5]]
Это также может быть достигнуто grep:
assert [null, 30, null].grep() == [30]
или
assert [null, 30, null].grep {it} == [30]
или
assert [null, 30, null].grep { it != null } == [30]
Просто [null].findAll{null != it}
, если it
равно null, тогда он возвращает false, поэтому он не будет существовать в новой коллекции.
Другой способ сделать это - [null, 20, null].findResults{it}
.
Это делает удаление всех нулевых элементов.
myList.removeAll { !it }
Если число 0 находится в вашем домене, вы можете проверить его на null
myList.removeAll { it == null }