我有比较两种方法,如果列表为空或不检查集合是否是在Java空:这是最好的方法
if (CollectionUtils.isNotEmpty(listName))
和
if(listName != null && listName.size() != 0)
我的弓告诉我,前者比后者好。
但我认为后者更好。任何人都可以请澄清它。
我有比较两种方法,如果列表为空或不检查集合是否是在Java空:这是最好的方法
if (CollectionUtils.isNotEmpty(listName))
和
if(listName != null && listName.size() != 0)
我的弓告诉我,前者比后者好。
但我认为后者更好。任何人都可以请澄清它。
你应该绝对使用isEmpty()
。计算任意列表的size()
可能会很昂贵。即使验证是否有任何元素可以价格昂贵,当然,但没有优化size()
哪些不能也使isEmpty()
更快,反之则不是这种情况。
例如,假设你有一个链表结构没有缓存大小(而LinkedList<E>
确实)。然后size()
将成为O(N)操作,而isEmpty()
仍然是O(1)
。
此外,当然,使用isEmpty()
更清楚地表明您实际上感兴趣的内容。
isEmpty()
Returns true if this list contains no elements.
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/List.html
我会使用第一个。很明显,马上看到它的作用。我不认为这里的空检查是必要的。
除非你已经在使用CollectionUtils,否则我会为List.isEmpty()
减去依赖关系。
性能明智的CollectionUtils会慢一些。因为它基本上遵循相同的逻辑,但有额外的开销。
所以这将是可读性与性能与依赖关系。虽然没有太大的区别。
CollectionUtils.isNotEmpty
检查您的集合是否为空且不为空。这与双重检查相比要好一些,但前提是你的项目中有这个Apache库。如果你不那么使用:
if(list != null && !list.isEmpty())
如果您在项目中使用了Apache常用工具而不是第一个工具。因为它更短,并且与后者完全一样。两种方法之间不会有任何区别,但它在源代码中看起来如何。
而且使用
listName.size() != 0
一个空的检查是气馁,因为所有集合实现有
listName.isEmpty()
功能不完全相同。
因此,所有的一切,如果你在你的类路径中的Apache常见utils的,无论如何,使用
if (CollectionUtils.isNotEmpty(listName))
在任何其他情况下使用
if(listName != null && listName.isEmpty())
你不会注意到任何性能差异。两条线完全相同。
有''size()'方法是O(n)的集合。通常预计所有'isEmpty()'实现都将是O(1)。 –
阿帕奇百科全书CollectionUtils.isNotEmpty(集合)是一个NULL-SAFE检查
返回TRUE是Collection /列表不空不空 返回false如果集合为空
例如:
List<String> properties = new ArrayList();
...
if (CollectionUtils.isNotEmpty(properties)) {
// process the list
} else {
// list is null or empty
}
良好EXA哪里该事项在实践mple是在JDK中,其中列明了ConcurrentSkipListSet
implementation:
要注意的是,与大多数collection不同,size方法不是一个固定时间操作。
这是一个明确的情况,其中isEmpty()
比检查size()==0
效率高得多。
您可以直观地看到,为什么在某些集合中可能会出现这种情况。如果这种结构必须遍历整个元素来计算元素,那么如果你只想知道它是否为空,那么只要找到第一个元素就可以停下来。
if (CollectionUtils.isNotEmpty(listName))
是一样的:
if(listName != null && !listName.isEmpty())
在第一种方法listName
可以为空,空指针异常不会被抛出。在第二种方法中,您必须手动检查空值。第一种方法更好,因为它需要较少的工作。使用.size() != 0
是不必要的,我也知道它比使用更慢.isEmpty()
要检查收集是否为空,可以使用method:.count()。例如:
DBCollection collection = mMongoOperation.getCollection("sequence");
if(collection.count() == 0) {
SequenceId sequenceId = new SequenceId("id", 0);
mMongoOperation.save(sequenceId);
}
使用CollectionUtils.isEmpty(收藏科尔)
空安全检查,如果指定的集合为空。 Null返回true。
参数: 科尔 - 集检查,可以为null
返回: 真,如果为空或null
为什么你认为 “后者” 更好? – ant
OP不认为 –
为什么不'listname.isEmpty()'? 'isEmpty'是Collection接口中的一种方法 – ccheneson