开发者

Remove null items from a list in Groovy

What is the best way to remove null items from a list in G开发者_Go百科roovy?

ex: [null, 30, null]

want to return: [30]


Just use minus:

[null, 30, null] - null


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


The findAll method should do what you need.

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


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


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]​


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


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


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 }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜