Vik*_*ant 69 java collections is-empty
我有两种方法可以检查List是否为空
if (CollectionUtils.isNotEmpty(listName))
Run Code Online (Sandbox Code Playgroud)
和
if (listName != null && listName.size() != 0)
Run Code Online (Sandbox Code Playgroud)
我的拱门告诉我,前者比后者好.但我认为后者更好.
有人可以澄清一下吗?
Jon*_*eet 132
你应该绝对使用isEmpty()
.计算size()
任意列表可能很昂贵.即使确认是否有任何元素可以是昂贵的,当然,但没有优化size()
不能也让isEmpty()
速度更快,而相反的情况并非如此.
例如,假设你有一个链表结构,它并没有缓存的大小(而LinkedList<E>
做).然后size()
将成为O(N)操作,而isEmpty()
仍然是O(1)
.
另外,当然,使用isEmpty()
状态更清楚你真正感兴趣的状态.
ale*_*y28 55
CollectionUtils.isNotEmpty
检查您的集合是否为空且不为空.与双重检查相比,这更好,但前提是您的项目中有此Apache库.如果你不这样做,那么:
if(list != null && !list.isEmpty())
Run Code Online (Sandbox Code Playgroud)
aaa*_*aaa 12
除非你已经在使用CollectionUtils,否则我会选择List.isEmpty()
更少的依赖项.
性能明智的CollectionUtils会慢一点.因为它基本上遵循相同的逻辑,但有额外的开销.
因此,可读性与性能与依赖性相关.虽然没有太大的区别.
if (CollectionUtils.isNotEmpty(listName))
是相同的:
if(listName != null && !listName.isEmpty())
在第一种方法中listName
可以为null,并且不会抛出空指针异常.在第二种方法中,您必须手动检查null.第一种方法更好,因为它需要你的工作量更少.使用.size() != 0
是不必要的东西,我也知道它比使用慢.isEmpty()
如果项目中有Apache常用实用程序,请使用第一个实用程序.因为它更短,并且与后者完全相同.两种方法之间没有任何区别,但它在源代码中的外观如何.
还使用空检查
listName.size() != 0
Run Code Online (Sandbox Code Playgroud)
不鼓励因为所有的集合实现都有
listName.isEmpty()
Run Code Online (Sandbox Code Playgroud)
完全相同的功能.
总而言之,如果你的类路径中有Apache common utils,请使用
if (CollectionUtils.isNotEmpty(listName))
Run Code Online (Sandbox Code Playgroud)
在任何其他情况下使用
if(listName != null && listName.isEmpty())
Run Code Online (Sandbox Code Playgroud)
您不会注意到任何性能差异.两条线都完全一样.
Apache Commons 的 CollectionUtils.isNotEmpty(Collection) 是 NULL-SAFE 检查
如果集合/列表非空且非空,则返回 TRUE 如果集合为空,则返回 FALSE
例子:
List<String> properties = new ArrayList();
...
if (CollectionUtils.isNotEmpty(properties)) {
// process the list
} else {
// list is null or empty
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
144059 次 |
最近记录: |