Remove null items from a list in Groovy

后端 未结 8 1394
清酒与你
清酒与你 2021-02-06 20:34

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

ex: [null, 30, null]

want to return: [30]

相关标签:
8条回答
  • 2021-02-06 20:43

    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

    0 讨论(0)
  • 2021-02-06 20:53

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

    0 讨论(0)
  • 2021-02-06 20:54

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

    0 讨论(0)
  • 2021-02-06 20:57

    The findAll method should do what you need.

    ​[null, 30, null]​.findAll {it != null}​
    
    0 讨论(0)
  • 2021-02-06 20:57

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

    0 讨论(0)
  • 2021-02-06 20:57

    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]​
    
    0 讨论(0)
提交回复
热议问题