Remove null items from a list in Groovy

流过昼夜 提交于 2019-12-04 08:46:55

问题


What is the best way to remove null items from a list in Groovy?

ex: [null, 30, null]

want to return: [30]


回答1:


here is an answer if you dont want to keep the original list

void testRemove() {
    def list = [null, 30, null]

    list.removeAll([null])

    assertEquals 1, list.size()
    assertEquals 30, list.get(0)
}

in a handy dandy unit test




回答2:


Just use minus:

[null, 30, null] - null



回答3:


The findAll method should do what you need.

​[null, 30, null]​.findAll {it != null}​



回答4:


I think you'll find that this is the shortest, assuming that you don't mind other "false" values also dissappearing:

println([null, 30, null].findAll())

public Collection findAll() Finds the items matching the IDENTITY Closure (i.e. matching Groovy truth). Example:

def items = [1, 2, 0, false, true, '', 'foo', [], [4, 5], null] assert items.findAll() == [1, 2, true, 'foo', [4, 5]]




回答5:


This can also be achieved by grep:

assert [null, 30, null].grep()​ == [30]​

or

assert [null, 30, null].grep {it}​ == [30]​

or

assert [null, 30, null].grep { it != null } == [30]​



回答6:


Simply [null].findAll{null != it} if it is null then it return false so it will not exist in new collection.




回答7:


This does an in place removal of all null items.

myList.removeAll { !it }

If the number 0 is in your domain you can check against null

myList.removeAll { it == null }



回答8:


Another way to do it is [null, 20, null].findResults{it}.



来源:https://stackoverflow.com/questions/3285241/remove-null-items-from-a-list-in-groovy

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!