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()检查列表是否为空总是很方便。 在所有类型的列表中提供此类方法的原因也与接口有关,因为ArrayListVectorLinkedList实现相同的List接口: 此接口具有isEmpty()方法; 然后,每个特定类型的列表提供其isEmpty()方法的实现。

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

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