如何判断List是否为空,也就是list.isEmpty()和list.size() == 0 有何区别
2016-02-29 13:35
399 查看
一,如何判断List是否为空,也就是list.isEmpty()和list.size() == 0 有何区别?
就功能的实现来说,两者之间没有什么区别,都可以用来判断集合是否为空。
我们来看API文档说明
API文档给我们提供了这样2个方法,区别更多的是返回值不同,因此我们可以结合项目特点,采用合适的方法。如果我们需要返回值是Boolean类型,可以调用list.isEmpty();如果我们需要返回值是字符串或者整形,可以调用list.size() == 0。
二,如何判断字符串为空?
现在有一个字符串:
1,equals方法
上面这2种方法,应该是我们经常使用的2种方法了。
首先从功能上来说,2种方法都是没有什么问题的,都可以实现我们想要实现的功能。然后就是StringUtil是null安全的,也就是说如果testString为null,也不会抛出NullPointerException异常。但是如果我们用equals方法,如果不注意的话,就可能会抛出NullPointerException异常。例如这种写法:testString.equals(""); 如果testString为null,显然就会出现NullPointerException异常了。
然后从效率上来说,equals方法的效率要高于StringUtils.isBlank。这一点很好理解,经过封装的isBlank的效率显然要低一些。但是一般情况下,字符串判断是否为空不会消耗太多的资源,所以我们也不用特别在意。
以上观点为个人观点,请谨慎参考。
就功能的实现来说,两者之间没有什么区别,都可以用来判断集合是否为空。
我们来看API文档说明
/** * Returns the number of elements in this list. If this list contains * more than <tt>Integer.MAX_VALUE</tt> elements, returns * <tt>Integer.MAX_VALUE</tt>. * * @return the number of elements in this list */ int size(); /** * Returns <tt>true</tt> if this list contains no elements. * * @return <tt>true</tt> if this list contains no elements */ boolean isEmpty();
API文档给我们提供了这样2个方法,区别更多的是返回值不同,因此我们可以结合项目特点,采用合适的方法。如果我们需要返回值是Boolean类型,可以调用list.isEmpty();如果我们需要返回值是字符串或者整形,可以调用list.size() == 0。
二,如何判断字符串为空?
现在有一个字符串:
String testString = "YANGCQ";我们有以下几种方法来判断:
1,equals方法
"".equals(testString);//安全的写法,推荐
testString.equals("");//不安全的写法2,StringUtils Apache工具类包中的StringUtils工具类
StringUtils.isEmpty(testString); StringUtils.isBlank(testString);
上面这2种方法,应该是我们经常使用的2种方法了。
首先从功能上来说,2种方法都是没有什么问题的,都可以实现我们想要实现的功能。然后就是StringUtil是null安全的,也就是说如果testString为null,也不会抛出NullPointerException异常。但是如果我们用equals方法,如果不注意的话,就可能会抛出NullPointerException异常。例如这种写法:testString.equals(""); 如果testString为null,显然就会出现NullPointerException异常了。
然后从效率上来说,equals方法的效率要高于StringUtils.isBlank。这一点很好理解,经过封装的isBlank的效率显然要低一些。但是一般情况下,字符串判断是否为空不会消耗太多的资源,所以我们也不用特别在意。
以上观点为个人观点,请谨慎参考。
相关文章推荐
- MediaPlayerActivity playNextMusic()
- c3p0数据库连接池介绍+实例
- 添加控制器View到父控制器却不见这样莫名奇妙的错误
- 关于Android的震动器Vibrator使用一点心得
- 树状数组学习(转)
- iOS开发网络篇—数据缓存
- 腾讯精品文!超多干货的UI界面动效设计指南
- 搭建分布式Hadoop2.6.0和Spark1.6.0集群
- Android自定义圆形和圆角图片
- JVM虚拟机-内存划分
- 【问题集】出现error: The following untracked working tree files would be overwritten by checkout
- 总体心得
- Mahout学习路线图
- 滚动条超出表格标题,表格标题固定
- git使用ssh密钥
- 【DSP开发技术】影响高性能DSP功耗的因素及其优化方法
- CInternetSessio和CFtpConnection连接FTP
- 备战2017软考!必备视频教程推荐(综合复习+真题解析+考前冲刺+报名整理)
- 国内UED网站大全
- 华为:一张图看懂 HBase