-->

检查如果集合为空在Java中:这是最好的方法是什么?(Checking if a collectio

2019-06-25 16:53发布

我有检查两种方式,如果列表为空或不

if (CollectionUtils.isNotEmpty(listName)) 

if (listName != null && listName.size() != 0)

我的弓告诉我,前者比后者更好。 但是,我认为后者更好。

任何人都可以请澄清呢?

Answer 1:

绝对应该使用isEmpty() 计算的size()的任意列表的可能是昂贵的。 即使确认是否有任何元素可以是昂贵的,当然,但没有优化size()不能使isEmpty()更快,而相反的情况并非如此。

例如,假设你有一个链表结构,它并没有缓存的大小(而LinkedList<E> 一样 )。 然后size()将成为一个O(N)的操作,而isEmpty()仍然是O(1)

此外,当然,使用isEmpty()声明了你在更清楚真正感兴趣。



Answer 2:

CollectionUtils.isNotEmpty检查,如果您的集合不为空或不为空。 这是更好的比较仔细检查,但只有当你有你的这个项目的Apache库。 如果你不那么使用:

if(list != null && !list.isEmpty())


Answer 3:

除非你已经在使用CollectionUtils我会去List.isEmpty()依赖性较少。

性能方面CollectionUtils会稍微慢一些。 因为它基本上遵循同样的逻辑,但有额外的开销。

因此,这将是可读性与性能与依赖。 不多有很大的区别的,虽然。



Answer 4:

if (CollectionUtils.isNotEmpty(listName))

是相同的:

if(listName != null && !listName.isEmpty())

在第一种方法listName可以为空,空指针异常不会被抛出。 在第二个方法,你必须手动检查空。 第一种方法是更好,因为它需要你少工作。 使用.size() != 0是多余的东西可言,我也了解到,这比使用慢.isEmpty()



Answer 5:

如果你有Apache的常用工具在您的项目,而使用第一个。 由于其短,做一模一样的后者。 不会有两种方法,但怎么看起来里面的源代码之间的任何差别。

另外一个空的支票使用

listName.size() != 0

气馁,因为所有集合的实现有

listName.isEmpty()

功能不完全一样。

因此,所有的一切,如果你在你的类路径中的Apache常见utils的,无论如何,使用

if (CollectionUtils.isNotEmpty(listName)) 

在其他情况下使用

if(listName != null && listName.isEmpty())

你不会注意到任何性能差异。 两条线都做同样的。



Answer 6:

Apache的百科全书CollectionUtils.isNotEmpty(集合)是一个NULL-SAFE检查

返回TRUE是Collection /列表不是空的,而不是空返回false如果集合为null

例:

List<String> properties = new ArrayList();
...
if (CollectionUtils.isNotEmpty(properties)) {
  // process the list
} else {
 // list is null or empty
}

参见: https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/CollectionUtils.html#isNotEmpty(java.util.Collection)



Answer 7:

哪里该事项在实践中一个很好的例子是ConcurrentSkipListSet实现在JDK中,其中规定:

要注意的是,与大多数collection不同,size方法不是一个固定时间操作。

这是一个明显的例子,其中isEmpty()比检查是否更有效size()==0

你可以看到为什么,直觉,这可能是一些收藏的情况。 如果它的类型的结构,你必须遍历整个事情来算的元素,那么如果你想知道的是它是否是空的,你可以只要你找到了第一个停下来。



Answer 8:

使用CollectionUtils.isEmpty(收藏科尔)

空安全检查,如果指定的集合为空。 空返回true。

参数:科尔-集检查,可以为null

返回:如果为空或空真



Answer 9:

isEmpty()

      Returns true if this list contains no elements.

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/List.html



Answer 10:

我会用第一个。 它清楚地看到马上它做什么。 我不认为零检查是必要的在这里。



Answer 11:

检查集合为空,则可以使用方法:.Count之间的()。 例:

DBCollection collection = mMongoOperation.getCollection("sequence");
    if(collection.count() == 0) {
        SequenceId sequenceId = new SequenceId("id", 0);
        mMongoOperation.save(sequenceId);
    }


文章来源: Checking if a collection is empty in Java: which is the best method?