web-dev-qa-db-ja.com

Groovyのリストからヌルアイテムを削除する

Groovyのリストからヌル項目を削除する最良の方法は何ですか?

例:[null, 30, null]

返したい:[30]

53
RyanLynch

元のリストを保持したくない場合は、ここに答えがあります

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

    list.removeAll([null])

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

便利なダンディ単体テストで

73
hvgotcodes

マイナスを使用してください:

[null, 30, null] - null
118
Sergei

FindAllメソッドは、必要なことを行う必要があります。

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

他の「false」値も消えることを気にしないと仮定すると、これが最短であることがわかると思います。

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

public Collection findAll()IDENTITY Closureに一致する(つまり、Groovyの真実に一致する)アイテムを検索します。例:

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

11
Dino Fancellu

これは grep でも実現できます。

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

または

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

または

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

これにより、すべてのヌルアイテムがインプレースで削除されます。

myList.removeAll { !it }

番号0がドメイン内にある場合、nullをチェックできます

myList.removeAll { it == null }
2
B. Anderson

単に[null].findAll{null != it}itがnullの場合、falseを返すため、新しいコレクションには存在しません。

2

別の方法は[null, 20, null].findResults{it}

1
Anonymous1