在写应用的时候经常设计到对List的操作问题,比如个从Dao里取得数据,返回一个List,当该list为空,或者size == 0的时候回去抛异常,或者做一些其它业务逻辑,我见过好多项目中都会在开始建立的时候写一大堆的Utils类,其中就包或对String,List等的操作,我觉得完全没有必要自己写这些了,spring util包已经能够满足我们的需求了.
org.springframework.util
CollectionUtils.java
下边是我认为操作集合最常用不过的两个方法了,代码很简单清爽:
//可以传入List 等实现了Collection接口的集合进去
public static boolean isEmpty(Collection collection) {
return (collection == null || collection.isEmpty());
}
//重载了isEmpty方法,可以传实现了Map接口的集合进去,比如:HashMap
public static boolean isEmpty(Map map) {
return (map == null || map.isEmpty());
}
StringUtils.java
同样的,字符串的常用操作也是不可少的:
//判断字符序列是否有长度
public static boolean hasLength(CharSequence str) {
return (str != null && str.length() > 0);
}
//判断字符串是否有长度,复用了上边的方法
public static boolean hasLength(String str) {
return hasLength((CharSequence) str);
}
这里的CharSequence是JDK里String所实现的一个接口:
通过查看JDK6.0的源码可以看到:
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence
CharSequence 有什么样的方法呢:继续跟进去看:
public interface CharSequence {
//返回字符序列的长度
int length();
//返回字符序列中指定位置的字符
char charAt(int index);
//按照参数start和end返回指定位置的子 字符序列
CharSequence subSequence(int start, int end);
//这个不用说了吧
public String toString();
}
判断了字符串是否有长度还不够,万一是一个长度为10的空格组成的字符串呢,在做一些应用开发的时候,这样的数据往往是没有意义的,Spring照样也有这样的方法,继续往下看:
还是在StringUtils.java中:
public static boolean hasText(CharSequence str) {
//这里首先保证字符
if (!hasLength(str)) {
return false;
}
int strLen = str.length();
for (int i = 0; i < strLen; i++) {
if (!Character.isWhitespace(str.charAt(i))) {
return true;
}
}
return false;
}
//重载了上边的方法,参数换为String类型,复用上边方法
public static boolean hasText(String str) {
return hasText((CharSequence) str);
}
有时候处理数据又不希望在字符串中出现空格,跟上边方法相反的可以判断字符序列中是否有空格:
//判断字符序列中是否有空格
public static boolean containsWhitespace(CharSequence str) {
if (!hasLength(str)) {
return false;
}
int strLen = str.length();
for (int i = 0; i < strLen; i++) {
//这里的判断刚好跟上边那个方法相反
if (Character.isWhitespace(str.charAt(i))) {
return true;
}
}
return false;
}
//同样的重载上边这个方法
public static boolean containsWhitespace(String str) {
return containsWhitespace((CharSequence) str);
}
还有类似好多的常用方法,其实都能用到,除此以为还有ObjectUtils、ClassUtils等等,有心去的朋友去看一下Spring2.5.6的源代码,没必要再自己重新写Utils包了,软件的目标是复用,已经有的轮子就没有必要再发明一次了,希望我的文章能帮助你,本人水平有限,如有不对欢迎大家拍砖。
分享到:
相关推荐
base64utils jar 项目中应用,亲测,希望能帮到您,加油 少年
httpclient工具类包含get,post,put,delete请求
里面提供了Spring的AOP,DAO,DATA,IOC,JSON,MVC,ORM,TASK,TEST包以及applicationContext.xml配置文件,适合Spring框架初学者及老鸟下载使用
基于spring和redis的redisTemplate工具类,针对redisTemplate的一些封装,包含一些日常比较容易用到的一些通用方法。
Spring+SpringMVC+DBUtils系统框架下的common包、filter包和utils包中的常用类,详情请见https://blog.csdn.net/Joyce_Ff/article/details/93377981
struts spring hibernate 整合好的jar包 已经验证,解压后直接引入工程使用即可
qrcode-utils-1.1.jar weixin-graal-4.0.9.B.jar weixin-java-common-4.0.9.B.jar weixin-java-cp-4.0.9.B.jar weixin-java-miniapp-4.0.9.B.jar weixin-java-mp-4.0.9.B.jar weixin-java-open-4.0.9.B.jar weixin-...
•Spring Boot CLI: 使用CLI •核心特性: SpringApplication |外部配置|概要|日志 •Web应用:MVC |嵌入式容器 •处理数据:SQL | NO-SQL •消息传递:概述| JMS •测试:概述|引导应用| Utils •扩展:自动配置| @...
Code-memo 平时学习的开源框架的示例代码。包括mybatis、spring、spring-boot、hbase、hive、impala、guava、jdk等 包含的模块 spring-demo mybatis-demo ...google guaua 使用示例,hbase访问接口以及hbase操
Spring 5.3.4 build时 部分Jar包无法下载 以下为整理好的JAR包合集 velocity-1.6.2.jar commons-lang-2.4.jar aopalliance-1.0.jar annotations-1.3.2.jar plexus-utils-3.0.22.jar commons-lang3-3.4.jar joda-...
maven管理项目+springmvc+spring+hibernate+freemarker 集成框架。其中注解格式清晰,hibernate进行了代码封装,对开发效率有了提高,对异常进行了封装。freemarker也有优化,参考common包下。对日期工具类有各种...
8.有全文检索工具类包含索引的创建、查询等,自动分页Bean,Excel读取/导出等功能、汉字转拼音,MD5加密,加密解密,图片转字符、字符转图片,IP检查,拦截器权限拦截,Struts2Utils类,Spring3Utils类,轻松搞定...
stax-utils-snapshot-20040917.jar wsdl4j-1.5.2.jar wstx-asl-3.0.1.jar xfire-aegis-1.2.2.jar xfire-annotations-1.2.2.jar xfire-core-1.2.2.jar xfire-java5-1.2.2.jar xfire-jsr181-api-1.0-M1.jar xfire-...
springboot-study springboot 使用 SpringBoot + MyBatis 搭建的微信小...Spring Boot 结合 CORS 在服务端解决 AJAX 跨域问题的 demo。 1.使用 CorsConfiguration 配置 @Configuration public class CorsConfig { pr
spring boot 项目demo,用于生成 archetype ...web 使用的是spring推荐的模板引擎 thymeleaf ,优点是前后端可以很好的分离,理念界面即原型,目前是thymeleaf是2版本,缺点:渲染性能不好,3版本性能
dev,开发分支,新功能都会在改分支上开发,不建议使用该分支,变量目录说明guns-admin一个成熟的后台管理系统,完全一样了后台管理系统的基本功能guns-utils工具包枪道道层枪支实体层枪支服务层演示技术选型核心...
xfirejar开发全部包 activation.jar commons-logging.jar jdom-1.0.jar spring.jar spring-mock.jar stax-api-1.0.1.jar stax-utils-snaPShot-20040917.jar wsdl4j-1.5.2.jar wstx-asl-3.0.1.jar xfire-aegis-1.2.2....
在yml文件中配置server: port: 8182spring: datasource: url: jdbc:mysql://localhost:3306/test?serverTimezone=Hongkong&useSSL=false&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true ...
jarjar-plexus-utils-2.0.6.jar jarjar-wagon-http-2.4.jar jarjar-wagon-http-shared4-2.4.jar jarjar-wagon-provider-api-2.4.jar jatl-0.2.2.jar javax.inject-1.jar jaxen-1.1.jar jcifs-1.3.17.jar ...
该jar包可以根据数据库表,自动生成action(struts2)/controller(springmvc)、model、service、dao各个层的代码。 实用框架:struts2/springmvc + mybatis + spring 可根据项目需要选择: 框架类型...