我有两种检查列表是否为空的方法
if (CollectionUtils.isNotEmpty(listName))
和
if (listName != null && listName.size() != 0)
我的拱门告诉我前者比后者好。但我认为后者更好。
谁能澄清一下?
我有两种检查列表是否为空的方法
if (CollectionUtils.isNotEmpty(listName))
和
if (listName != null && listName.size() != 0)
我的拱门告诉我前者比后者好。但我认为后者更好。
谁能澄清一下?
你绝对应该使用isEmpty()
. 计算size()
任意列表的 可能很昂贵。当然,即使验证它是否有任何元素也可能很昂贵,但是没有任何优化也不能size()
提高速度,反之则不然。isEmpty()
例如,假设您有一个没有缓存大小LinkedList<E>
的链表结构(而. 然后size()
将成为 O(N) 操作,而isEmpty()
仍然是O(1)
.
此外,当然,使用isEmpty()
更清楚地说明了您真正感兴趣的内容。
CollectionUtils.isNotEmpty
检查您的集合是否不为空且不为空。这比仔细检查更好,但前提是你的项目中有这个 Apache 库。如果你不那么使用:
if(list != null && !list.isEmpty())
除非您已经在使用 CollectionUtils,否则我会选择List.isEmpty()
更少的依赖项。
性能方面的 CollectionUtils 会慢一点。因为它基本上遵循相同的逻辑,但有额外的开销。
所以这将是可读性与性能与依赖性。不过差别不大。
if (CollectionUtils.isNotEmpty(listName))
是相同的:
if(listName != null && !listName.isEmpty())
在第一种方法listName
中可以为空,并且不会抛出空指针异常。在第二种方法中,您必须手动检查 null 。第一种方法更好,因为它需要你做的工作更少。使用.size() != 0
是完全没有必要的,我也了解到它比使用慢.isEmpty()
如果您的项目中有 Apache 常用实用程序,请使用第一个。因为它更短并且与后者完全相同。两种方法之间没有任何区别,但它在源代码中的外观如何。
也是一个空支票使用
listName.size() != 0
不鼓励,因为所有集合实现都有
listName.isEmpty()
功能完全相同。
总而言之,如果您的类路径中有 Apache 通用工具,请使用
if (CollectionUtils.isNotEmpty(listName))
在任何其他情况下使用
if(listName != null && listName.isEmpty())
您不会注意到任何性能差异。两条线的作用完全相同。
Apache Commons 的 CollectionUtils.isNotEmpty(Collection) 是一个 NULL-SAFE 检查
返回 TRUE 是 Collection/List 不为空且不为 null 如果 Collection 为 Null,则返回 FALSE
例子:
List<String> properties = new ArrayList();
...
if (CollectionUtils.isNotEmpty(properties)) {
// process the list
} else {
// list is null or empty
}
isEmpty()
Returns true if this list contains no elements.
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/List.html
在实践中这很重要的一个很好的例子是JDK 中的ConcurrentSkipListSet
实现,它指出:
请注意,与大多数集合不同,size 方法不是恒定时间操作。
这是一个明显的例子,isEmpty()
它比检查是否size()==0
.
您可以直观地看到为什么在某些集合中可能会出现这种情况。如果是那种你必须遍历整个事物来计算元素的结构,那么如果你只想知道它是否为空,你可以在找到第一个后立即停止。
使用CollectionUtils.isEmpty(Collection coll)
空安全检查指定的集合是否为空。空返回真。
参数: coll - 要检查的集合,可以为 null
返回: 如果为空或 null,则返回 true
我会用第一个。很明显可以立即看到它的作用。我认为这里不需要空检查。
org.apache.commons.collections4.CollectionUtils isEmpty() 方法用于检查任何集合(List、Set 等)是否为空。它检查 null 以及集合的大小。CollectionUtils isEmpty() 是一个静态方法,它接受 Collection 作为参数。
要检查集合是否为空,您可以使用方法:.count()。例子:
DBCollection collection = mMongoOperation.getCollection("sequence");
if(collection.count() == 0) {
SequenceId sequenceId = new SequenceId("id", 0);
mMongoOperation.save(sequenceId);
}