if(listStr.size == 0){与if(listStr.isEmpty()){

时间:2012-02-18 13:48:23

标签: java

List<String> listStr = new ArrayList<String>();

if(listStr.size == 0){

}

if(listStr.isEmpty()){

}

在我看来,使用listStr.isEmpty()的一个好处是,它不会检查列表的大小,然后将其与零进行比较,它只是检查列表是否为空。是否还有其他优势,因为我经常在代码库中看到if(listStr.size == 0)而不是if(listStr.isEmpty())?有没有理由以这种方式检查我不知道?

3 个答案:

答案 0 :(得分:28)

this question的答案可以给你答案。基本上,在某些列表的实现中,方法isEmpty()检查大小是否为零(因此从性能的角度来看它们实际上是等价的)。但是,在其他类型的列表(例如链接列表)中,计算项目需要的时间比检查项目是否为空还要多。

因此,使用方法isEmpty()检查列表是否为空总是很方便。在所有类型的列表中提供此类方法的原因也与接口有关,因为ArrayListVectorLinkedList实现了相同的List接口:{ {3}}具有isEmpty()方法;然后,每种特定类型的列表都提供了isEmpty()方法的实现。

答案 1 :(得分:12)

不,没有理由。 isEmpty()更清楚地表达了意图,应该是首选。 PMD甚至有a rule。但这并不重要。

答案 2 :(得分:7)

.size()可以是O(1)或O(N),具体取决于数据结构; .isEmpty()永远不会是O(N)。