Groovyのリストからヌル項目を削除する最良の方法は何ですか?
例:[null, 30, null]
返したい:[30]
元のリストを保持したくない場合は、ここに答えがあります
void testRemove() {
def list = [null, 30, null]
list.removeAll([null])
assertEquals 1, list.size()
assertEquals 30, list.get(0)
}
便利なダンディ単体テストで
マイナスを使用してください:
[null, 30, null] - null
FindAllメソッドは、必要なことを行う必要があります。
[null, 30, null].findAll {it != null}
他の「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]]
これは grep でも実現できます。
assert [null, 30, null].grep() == [30]
または
assert [null, 30, null].grep {it} == [30]
または
assert [null, 30, null].grep { it != null } == [30]
これにより、すべてのヌルアイテムがインプレースで削除されます。
myList.removeAll { !it }
番号0がドメイン内にある場合、nullをチェックできます
myList.removeAll { it == null }
単に[null].findAll{null != it}
it
がnullの場合、falseを返すため、新しいコレクションには存在しません。
別の方法は[null, 20, null].findResults{it}
。