在写应用的时候经常设计到对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包了,软件的目标是复用,已经有的轮子就没有必要再发明一次了,希望我的文章能帮助你,本人水平有限,如有不对欢迎大家拍砖。