[英]Google Guava isNullOrEmpty for collections
我看到Guava有针对字符串的isNullOrEmpty实用方法
Strings.isNullOrEmpty(str)
我们对列表有什么相似之处吗? 就像是
Lists.isNullOrEmpty(list)
这相当于
list == null || list.isEmpty()
另外,我们对阵列有什么相似之处吗? 就像是
Arrays.isNullOrEmpty(arr)
这相当于
arr == null || arr.length == 0
不,这种方法在番石榴中不存在,实际上在我们的“思想墓地”中。
我们不相信“空或空”是一个你真正想要询问集合的问题。
如果一个集合可能为null,并且null应该被视为空,那么就预先解决所有这些歧义,如下所示:
Set<Foo> foos = NaughtyClass.getFoos();
if (foos == null) {
foos = ImmutableSet.of();
}
或者像这样(如果你愿意):
Set<Foo> foos = MoreObjects.firstNonNull(
NaughtyClass.getFoos(), ImmutableSet.<Foo>of());
之后,您可以.isEmpty()
使用.isEmpty()
。 在调用淘气的API时立即执行此操作,并且您已经将这种奇怪的东西放在身后,而不是让它无限期地继续下去。
如果“null真正意味着空集合”没有被返回给你,而是传递给你,那么你的工作很简单:只需抛出一个NullPointerException
,然后让调用者变形。
在整个番石榴中你会发现的一件事就是它们往往对于null
的东西非常敌对。 作者希望阻止你尽可能多地使用null
,并且提供实用程序方法以使其更容易使用null
将会对此产生反作用。
如果你想使用Guava的范例,请考虑这个集合(或数组)的源是否真的应该返回null
。 如果没有,请考虑将其标记为@NonNull
并返回空集合而不是null
。 或者作为期望没有null
值列表的函数的参数,请考虑使用Preconditions.checkNotNull
,如果(意外地)传入null
,则抛出异常。
如果null
确实合法,则list == null || list.isEmpty()
list == null || list.isEmpty()
并不难。
在commons-collections中有一个CollectionUtils.isEmpty() 。
Spring Framework有一个名为CollectionUtils
专用util类。 您正在寻找的方法是: org.springframework.util.CollectionUtils.isEmpty
。 对于null和空集合,它返回true。
对于数组,有org.springframework.util.ObjectUtils.isEmpty
方法,它的行为非常相似。
Apache CollectionUtils 4有一个方法CollectionUtils.emptyIfNull() ,如果集合为null,则返回一个空列表。 这在foreach循环中非常有用,因此在迭代之前不需要进行空检查
我的解决方案是:MoreObjects.firstNonNull(list,Collections.wallList())
我正在使用Guava MoreObjects和JDK Collections。
@Test
public void listnull() {
List<String> list = null;
for (String str : MoreObjects.firstNonNull(list, Collections.<String> emptyList())) {
System.out.println(str);
}
list = new ArrayList<String>();
list.add("http://stackoverflow.com/");
for (String str : MoreObjects.firstNonNull(list, Collections.<String> emptyList())) {
System.out.println(str);
}
}
查看Appache集合如果collection为null或为空,则CollectionUtils.isEmpty()将返回true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.