小智 122
只需使用减号:
[null, 30, null] - null
Run Code Online (Sandbox Code Playgroud)
hvg*_*des 74
如果您不想保留原始列表,这里是一个答案
void testRemove() {
def list = [null, 30, null]
list.removeAll([null])
assertEquals 1, list.size()
assertEquals 30, list.get(0)
}
Run Code Online (Sandbox Code Playgroud)
在一个方便的花花公子单元测试中
Chr*_*ail 49
findAll方法应该做你需要的.
?[null, 30, null]?.findAll {it != null}?
Run Code Online (Sandbox Code Playgroud)
Din*_*llu 11
我想你会发现这是最短的,假设你不介意其他"假"值也消失了:
println([null, 30, null].findAll())
Run Code Online (Sandbox Code Playgroud)
public Collection findAll()查找与IDENTITY Closure匹配的项目(即匹配Groovy真理).例:
def items = [1,2,0,false,true,'','foo',[],[4,5],null]断言items.findAll()== [1,2,true,'foo' ,[4,5]]
这也可以通过grep来实现:
assert [null, 30, null].grep()? == [30]?
Run Code Online (Sandbox Code Playgroud)
要么
assert [null, 30, null].grep {it}? == [30]?
Run Code Online (Sandbox Code Playgroud)
要么
assert [null, 30, null].grep { it != null } == [30]?
Run Code Online (Sandbox Code Playgroud)