我们使用ArrayList,hashmap等集合.
我们检查条件的次数,例如list是否为null.
我们有很多方法来判断我们的集合是否为空.
不同的方法.
1. if(list==null)
2. if(list.size()==0)
3. if(list.isEmpty())
Run Code Online (Sandbox Code Playgroud)
有时我们还需要检查列表是否为空,因此我们通常会通过这些方式进行检查
1. if(list!=null)
2. if(list.size()>0)
3. if(!list.isEmpty())
Run Code Online (Sandbox Code Playgroud)
考虑到程序执行的性能,哪个是最佳条件还是需要将这些组合起来?
最佳组合将是
if(list!=null && !list.isEmpty()){
//Yeah ,do something
}
Run Code Online (Sandbox Code Playgroud)
一个用于空检查,然后是否有任何检查
1. if(list!=null)
Run Code Online (Sandbox Code Playgroud)
你应该确保永远不会这样!
阅读Joshua Bloch撰写的有效Java第2版
第43项:返回空数组或集合,而不是空值
[...]总之,没有理由从数组或集合值方法返回null,而不是返回空数组或集合.空返回惯用语很可能是C编程语言的延续,其中数组长度与实际数组分开返回.在C中,如果返回零作为长度,则分配数组没有任何优势.
简而言之,让你的方法返回Collections.emptyList()而不是null,你有一点不用担心.
2. if(list.size()>0)
3. if(!list.isEmpty())
Run Code Online (Sandbox Code Playgroud)
那要看.对于像ArrayList这样的简单集合,它们是等效的.但是,如果您的Collection实际上是数据库查询的实时视图呢?调用size()可能是一个非常昂贵的操作,而isEmpty()将始终是O(1).我会说使用isEmpty().
另见Jon Skeet的回答:https://stackoverflow.com/a/11152624/342852
nullMeanslist初始化为 null。null列出size或isEmpty将抛出NullPointerException. 但是,not nulllist可以为空或者 size==0
(list!=null) != (list.size()==0)
Run Code Online (Sandbox Code Playgroud)
size==0 和 isEmpty 是等价的。
(list.size()==0) == list.isEmpty()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29571 次 |
| 最近记录: |