if(listStr.size == 0){与if(listStr.isEmpty()){
List listStr = new ArrayList(); if(listStr.size == 0){ }
与
if(listStr.isEmpty()){ }
在我看来,使用listStr.isEmpty()
一个好处是它不检查列表的大小,然后将其与零进行比较,它只是检查列表是否为空。 是否有任何其他优点,因为我经常在代码库中看到if(listStr.size == 0)
而不是if(listStr.isEmpty())
? 是否有理由以这种方式检查我不知道?
这个问题的答案可以给你答案。 基本上,在某些列表的实现中,方法isEmpty()
检查大小是否为零(因此从性能的角度来看它们实际上是等价的)。 但是,在其他类型的列表(例如链接列表)中,计数项目需要的时间多于检查它是否为空。
因此,使用方法isEmpty()
检查列表是否为空总是很方便。 在所有类型的列表中提供此类方法的原因也与接口有关,因为ArrayList
, Vector
和LinkedList
实现相同的List
接口: 此接口具有isEmpty()
方法; 然后,每个特定类型的列表提供其isEmpty()
方法的实现。
不,没有理由。 isEmpty()
更清楚地表达了意图,应该是首选。 PMD甚至有这样的规则 。 但这并不重要。
.size()
可以是O(1)或O(N),具体取决于数据结构; .isEmpty()
永远不是O(N)。