CollectionUtils.isNotEmpty()是否比null检查更好?

Try*_*ing 4 java collections java-7 java-collections-api

许多建议使用CollectionUtils.isNotEmpty(coll)而不是coll != null在下面的用例也。

if (CollectionUtils.isNotEmpty(coll)) {
    for (String str : coll) {
    }
}
Run Code Online (Sandbox Code Playgroud)

代替

if (coll != null) {
    for (String str : coll) {
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么理由/优势来CollectionUtils.isNotEmpty(coll)代替这里吗?谢谢。

man*_*uti 6

这里没有真正的优势。即使有,它也会很小。它仅阻止创建Iterator和执行分支指令,仅此而已。

仅当集合为空时,才会产生这种小的优势。以下循环:

for (String str : coll) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

等效于:

for (Iterator<String> iterator = col.iterator(); iterator.hasNext();) {
   String str = iterator.next();
   ...
}
Run Code Online (Sandbox Code Playgroud)

当集合为空时,选中将CollectionUtils.isNotEmpty(coll)阻止执行循环。因此,不会Iterator在内存中创建任何内容,也不会进行任何调用hasNext()。这是对O(1)调用的费用coll.isEmpty()


小智 5

反编译显示

public static boolean isEmpty(Collection coll) {
    return coll == null || coll.isEmpty();
}
Run Code Online (Sandbox Code Playgroud)


NaN*_*NaN 1

问题是,当集合不为空时,它仍然可以为空。因此,根据您的情况,选择什么取决于您的喜好。

  • 这没有改变这里。 (3认同)