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