StringUtils,CollectionUtils判断为空的方法和原生代码哪个效率最高

 更新时间:2022年02月28日 10:28:27   作者:qq_1411  
这篇文章主要介绍了StringUtils,CollectionUtils判断为空的方法和原生代码哪个效率最高,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

StringUtils,CollectionUtils判断为空的方法和原生代码哪个效率高

之前一直疑惑,封装类的方法和直接写代码(字符串或者集合否为空)判断哪个效率高,但是最近自己才测试

结论 

自己直接写判断效率高(一般是0ms),但是封装的简便、严谨(一般10ms以内)

  • 函数StringUtils.isNotBlank(testString)的功能与StringUtils.isBlank(testString)相反
  • 函数StringUtils.isNotEmpty(testString)的功能与StringUtils.isEmpty(testString)相反

isBlank与isEmpty区别

如果字符串是String str = " ";//或者是str = "    ";

所以如果判断为空的话 最好用

StringUtils.isBlank(str) 或者 str!=null && !"".equals(str.trim())

CollectionUtils封装类,判断为空的方法

List list = new ArrayList();
CollectionUtils.isEmpty(list);
Map map = new HashMap();
CollectionUtils.isEmpty(map);

源码:

public static boolean isEmpty(Collection<?> collection) {
    return collection == null || collection.isEmpty();
}
public static boolean isEmpty(Map<?, ?> map) {
    return map == null || map.isEmpty();
}
/**
 * Returns <tt>true</tt> if this list contains no elements.
 *
 * @return <tt>true</tt> if this list contains no elements
 */
public boolean isEmpty() {
    return size == 0;
}
/**
 * Returns <tt>true</tt> if this map contains no key-value mappings.
 *
 * @return <tt>true</tt> if this map contains no key-value mappings
 */
public boolean isEmpty() {
    return size == 0;
}

针对以上方法,本人认为字符串判断是否为空用StringUtils.isBlank(str );

对集合判断还是用原生代码list != null && list.size>0

 StringUtils、CollectionUtils工具类的常用方法

下面将为大家演示StringUtils、CollectionUtils工具类的常用方法。

一、CollectionUtils工具类

作用:常用于判断集合中是否有元素、是否为空等

 ★★★ 例1 : 判断集合是否为空:
 CollectionUtils.isEmpty(null); //控制台打印:true
 CollectionUtils.isEmpty(new ArrayList());//控制台打印:true  
 CollectionUtils.isEmpty({a,b});//控制台打印:false
 
 ★★★ 例2: 判断集合是否不为空:
 CollectionUtils.isNotEmpty(null); //控制台打印:false
 CollectionUtils.isNotEmpty(new ArrayList()); //控制台打印:false
 CollectionUtils.isNotEmpty({a,b}); //控制台打印:true

1、工作案例

1.1、数据库用户实体

 public class User implements Serializable {
     private Long      id;        //用户ID
     private String    name;      //用户姓名
     private Integer    age;      //用户年龄
     .......
}    

1.2、Mapper

 /**
 *  小编(程序牛CodeCow)用的是注解方式写sql,也可以用XML方式写sql,看个人爱好
 */
@Select("<script> " +
              "select * from User " +
        "</script>")
List<User> getUserList();//获取所有用户

1.3、测试

@Autowired
private UserMapper userMapper;
List<User> list = userMapper.getUserList();//调用Mapper方法,获取所有用户
if(CollectionUtils.isEmpty(list )){ //使用CollectionUtils工具判断是否为空
    //此处进行为空的业务逻辑操作
}else{
    //此处进行不为空的业务逻辑操作
}

二、StringUtils工具类

1、作用:常用于判断字符串是否为空、" "、null等

★★★ 例1:<isEmpty>判断某字符串是否为空(为空标准:字符串为null或字符串长度为0)
        StringUtils.isEmpty(null); //控制台打印:true
        StringUtils.isEmpty("") ;  //控制台打印:true
        StringUtils.isEmpty(" ");  //控制台打印:false (空格在StringUtils中作非空处理)
        StringUtils.isEmpty("程序牛CodeCow") //控制台打印:false
 
★★★ 例2:<isNotEmpty>判断某字符串是不为空(和例1相反)
        StringUtils.isNotEmpty(null); //控制台打印:false
        StringUtils.isNotEmpty("");   //控制台打印:false
        StringUtils.isNotEmpty(" ");  //控制台打印:true 
        StringUtils.isNotEmpty("程序牛CodeCow"); //控制台打印:true
 
★★★ 例3:<isBlank>判断某字符串是否为空
        StringUtils.isBlank(null);   //控制台打印:true
        StringUtils.isBlank("");     //控制台打印: true
        StringUtils.isBlank(" ");    //控制台打印:true
        StringUtils.isBlank("程序牛CodeCow")//控制台打印:false
 
★★★ 例4:<isNotBlank>判断某字符串是不为空(和例3相反)
        StringUtils.isNotBlank(null);//控制台打印:false
        StringUtils.isNotBlank("");  //控制台打印:false
        StringUtils.isNotBlank(" "); //控制台打印:false
        StringUtils.isBlank("程序牛CodeCow")//控制台打印:true
     
☆☆☆☆☆ isEmpty、isBlank 都是判断字符串是否为空,他两有什么区别 ???
               朋友记住一点就行:isBlank 可以说更加严格,比如:
                                isBlank("  ") isBlank 说我TM就说它 "为空"
                                isEmpty("  ") isEmpty 说我TM就说它 "不为空"
                                
              "朋友你懂了吗^__^"

2、工作案例

2.1、首先导包

 //导入commons包;小编(程序牛CodeCow)用的是 lang3,推荐
 <dependency>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-lang3</artifactId>
     <version>3.9</version>
 </dependency>

2.2、测试

1 "测试小编(程序牛CodeCow)就 不多 BB 了, 仔细看了上面的 应该都会了吧 ^__^ " 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot+Shiro+LayUI权限管理系统项目源码

    SpringBoot+Shiro+LayUI权限管理系统项目源码

    本项目旨在打造一个基于RBAC架构模式的通用的、并不复杂但易用的权限管理系统,通过SpringBoot+Shiro+LayUI权限管理系统项目可以更好的帮助我们掌握springboot知识点,感兴趣的朋友一起看看吧
    2021-04-04
  • 解决偶现的MissingServletRequestParameterException异常问题

    解决偶现的MissingServletRequestParameterException异常问题

    这篇文章主要介绍了解决偶现的MissingServletRequestParameterException问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java实战项目 健身管理系统

    Java实战项目 健身管理系统

    本文是一个Java语言编写的实战项目,是一个健身管理系统,主要用到了ssm+springboot等技术,技术含量笔记高,感兴趣的童鞋跟着小编往下看吧
    2021-09-09
  • Java中字符数组、String类、StringBuffer三者之间相互转换

    Java中字符数组、String类、StringBuffer三者之间相互转换

    这篇文章主要介绍了Java中字符数组、String类、StringBuffer三者之间相互转换,需要的朋友可以参考下
    2018-05-05
  • java 如何远程控制tomcat启动关机

    java 如何远程控制tomcat启动关机

    这篇文章主要介绍了java 远程控制tomcat启动关机的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • java和c/c++ 数据类型长度的比较

    java和c/c++ 数据类型长度的比较

    本篇文章主要是对java和c/c++ 数据类型长度的进行了详细的比较。需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • Java 线程相关总结

    Java 线程相关总结

    这篇文章主要介绍了Java 线程的相关资料,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-02-02
  • SpringBoot异常: nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext解决方案

    SpringBoot异常: nested exception is java.lang.NoClassDefFoundE

    这篇文章主要介绍了SpringBoot异常: nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext解决方案,说明了错误原因和解决方案,需要的朋友可以参考下
    2021-06-06
  • 浅谈Java源码ConcurrentHashMap

    浅谈Java源码ConcurrentHashMap

    最近刚入门java,觉得看源码挺有意思的,就记录一下一些常用类的源码吧,从而能够总结一些使用细节.本文对源码ConcurrentHashMap介绍的非常详细,对正在学习java的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • Spring Boot整合EhCache的步骤详解

    Spring Boot整合EhCache的步骤详解

    EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认CacheProvider。这篇文章主要介绍了Spring Boot整合EhCache的步骤详解,需要的朋友可以参考下
    2020-02-02

最新评论