Удалите нулевые элементы из списка в Groovy Каков наилучший способ удаления нулевых элементов из списка в Groovy? ex: [null, 30, null] хотите вернуться: [30] Ответ 1 вот ответ, если вы не хотите сохранить исходный список void testRemove() { def list = [null, 30, null] list.removeAll([null]) assertEquals 1, list.size() assertEquals 30, list.get(0) } в удобном dandy unit test Ответ 2 Просто используйте минус: [null, 30, null] - null Ответ 3 Метод findAll должен делать то, что вам нужно. [null, 30, null].findAll {it != null} Ответ 4 Я думаю, вы обнаружите, что это кратчайший, предполагая, что вы не возражаете против других "ложных" значений, также исчезающих: 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]] Ответ 5 Это также может быть достигнуто grep: assert [null, 30, null].grep() == [30] или assert [null, 30, null].grep {it} == [30] или assert [null, 30, null].grep { it != null } == [30] Ответ 6 Просто [null].findAll{null != it}, если it равно null, тогда он возвращает false, поэтому он не будет существовать в новой коллекции. Ответ 7 Другой способ сделать это - [null, 20, null].findResults{it}. Ответ 8 Это делает удаление всех нулевых элементов. myList.removeAll { !it } Если число 0 находится в вашем домене, вы можете проверить его на null myList.removeAll { it == null }
Ответ 1 вот ответ, если вы не хотите сохранить исходный список void testRemove() { def list = [null, 30, null] list.removeAll([null]) assertEquals 1, list.size() assertEquals 30, list.get(0) } в удобном dandy unit test
Ответ 4 Я думаю, вы обнаружите, что это кратчайший, предполагая, что вы не возражаете против других "ложных" значений, также исчезающих: 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]]
Ответ 5 Это также может быть достигнуто grep: assert [null, 30, null].grep() == [30] или assert [null, 30, null].grep {it} == [30] или assert [null, 30, null].grep { it != null } == [30]
Ответ 6 Просто [null].findAll{null != it}, если it равно null, тогда он возвращает false, поэтому он не будет существовать в новой коллекции.
Ответ 8 Это делает удаление всех нулевых элементов. myList.removeAll { !it } Если число 0 находится в вашем домене, вы можете проверить его на null myList.removeAll { it == null }