java工具类
约 2996 字大约 10 分钟
2026-04-04
JSON格式处理
Maven Repository: com.alibaba » fastjson (mvnrepository.com)
String jsonString = JSON.toJSONString(records);
List<CheckhouseRecord> checkhouseRecordList = (List<CheckhouseRecord>) JSON.parseObject(jsonString);commons工具类
Apache commons(Java常用工具包)简介 - 俄而123 - 博客园 (cnblogs.com)
commons-lang3工具类
Maven Repository: org.apache.commons » commons-lang3 (mvnrepository.com)
Overview (Apache Commons Lang 3.11 API)
commons常用工具包的使用&guava工具类使用 - QiaoZhi - 博客园 (cnblogs.com)

// 判断是否包含 空格 ""(空字符串) null 不能判断"null"字符串
if (StringUtils.isBlank(acc) || "null".equals(acc)) {
acc = null;
}
isBlank() 可以验证空格、null、"",如果是好几个空格也返回true
isEmpty验证不了空格,只有值为null和""返回true
两者都验证不了"null"字符串,所以如果验证"null"还需要自己用equals进行验证。
isEmpty ""(空字符串) null 不能判断"null"字符串
isNotEmpty !isEmpty
isAnyEmpty 任何一个匹配,可判断对象
isNoneEmpty 都不匹配
isBlank 空格 ""(空字符串) null 不能判断"null"字符串
isNotBlank !isBlank
isAnyBlank 任何一个匹配,可判断对象
isNoneBlank 都不匹配commons-Beanutils.ConvertUtils
Maven Repository: commons-beanutils » commons-beanutils » 1.9.3 (mvnrepository.com)
String[] delChecks = request.getParameterValues("delCheck");
// 字符串数组转换为其他包装类数组
Integer[] delChecksInteger = (Integer[]) ConvertUtils.convert(delChecks, Integer.class);返回格式化的日期字符串
yyyy-MM-dd HH:mm:ss
public static String dateToStr(Date date, String format)
{
if (date == null) {
return null;
}
DateFormat df = new SimpleDateFormat(format);
return df.format(date);
}将字符串转换为日期
public static Date strToDate(String dateStr, String format)
{
if (dateStr == null) {
return null;
}
DateFormat df = new SimpleDateFormat(format);
return df.parse(dateStr);
}判断字符串是否为日期类型("yyyy-MM-dd")
public static boolean isDate(String dateStr) {
return dateStr.matches("^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$");
}判断字符串是否为日期带时间类型("yyyy-MM-dd HH:mm:ss")
public static boolean isDateTime(String dateStr) {
return dateStr.matches("^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)) (([01]{1}\\d{1}|2[0-3]{1}):[0-5]{1}\\d{1}:[0-5]{1}\\d{1})$");
}判断字符串是否为时间类型("HH:mm:ss")
public static boolean isTime(String dateStr) {
return dateStr.matches("^([01]{1}\\d{1}|2[0-3]{1}):[0-5]{1}\\d{1}:[0-5]{1}\\d{1}$");
}返回日期是星期几
Calendar.SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
public static int getDayOfWeek(Date dt){
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
return cal.get(Calendar.DAY_OF_WEEK);
}获得当前日期的周一日期
public static Date getCurrentMonday(Date dt) {
int mondayPlus = WsdDateUtils.getMondayPlus(dt);
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus);
return currentDate.getTime();
}获得当前日期的周日日期
public static Date getPreviousSunday(Date dt) {
int mondayPlus = WsdDateUtils.getMondayPlus(dt);
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus +6);
return currentDate.getTime();
}返回一个日期的月份
public static int getDayOfMonth(Date dt){
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
return cal.get(Calendar.DAY_OF_MONTH);
}获取日期的年份
public static int getYearOfDate(Date dt) {
Calendar cal = Calendar.getInstance();
cal.setTime(dt);
int yearInt = cal.get(Calendar.YEAR);
return yearInt;
}判断两个日期区间是否有交集
/**
* 判断两个日期区间是否有交集
*
* @param a1 第一个日期区间的首日日期
* @param a2 第一个日期区间的末日日期
* @param b1 第二个日期区间的首日日期
* @param b2 第二个日期区间的末日日期
*
* @return 有交集返回true, 没交集返回false
*/
public static boolean hasIntersection(Date a1, Date a2, Date b1, Date b2) {
if ((a1.before(b1) && (a2.after(b1) || a2.equals(b1))) ||
((a1.after(b1) || a1.equals(b1))) && ((a1.before(b2)) || (a1.equals(b2)))) {
return true;
}
return false;
}返回月份所在季度
/**
* 返回月份所在季度
*/
public static String getQuarterByMonth(String mon) {
int month = Integer.parseInt(mon);
return String.valueOf((month-1) / 3 + 1);
}返回两个日期的分钟数差
public static long getMinute(Date d1, Date d2) {
if (d1 == null || d2 == null) {
return 0;
}
long ms = getMilliSecond(d1, d2);
return ms/1000/60;
}返回两个日期小时差
public static double getHour(Date d1, Date d2) {
if (d1 == null || d2 == null) {
return 0;
}
long ms = getMilliSecond(d1, d2);
return ms/1000.00/60/60;
}返回两个日期天数差
public static long getDay(Date d1, Date d2){
if (d1 == null || d2 == null) {
return 0;
}
long ms = getMilliSecond(d1, d2);
return ms/1000/60/60/24;
}返回两个日期毫秒差
public static long getMilliSecond(Date d1, Date d2) {
long d1MS = d1.getTime();
long d2MS = d2.getTime();
return Math.abs(d1MS - d2MS);
}获得递增数秒后的时间
/**
* 获得递增数秒后的时间
* @param date
* @param amount 可以为任意整数
* @return
*/
public static Date addSeconds(Date date,int amount){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.SECOND, amount);
return cal.getTime();
}获得递增数分钟后的时间
/**
* 获得递增数分钟后的时间
* @param date
* @param amount 可以为任意整数
* @return
*/
public static Date addMinutes(Date date,int amount){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MINUTE, amount);
return cal.getTime();
}获得递增数小时后的时间
/**
* 获得递增数小时后的时间
* @param date
* @param amount 可以为任意整数
* @return
*/
public static Date addHours(Date date,int amount){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR, amount);
return cal.getTime();
}获得递增数天后的时间
/**
* 获得递增数天后的时间
* @param date
* @param amount 可以为任意整数
* @return
*/
public static Date addDays(Date date,int amount){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, amount);
return cal.getTime();
}获得递增数月后的时间
/**
* 在日期上加月数
* @param sDate
* @param num
* @return
*/
public static Date addMonths(Date sDate,int num){
Calendar cal = Calendar.getInstance();
cal.setTime(sDate);
cal.add(Calendar.MONTH, num);
return cal.getTime();
}获得递增数年后的时间
/**
* 获得递增数年后的时间
* @param date
* @param amount 可以为任意整数
* @return
*/
public static Date addYears(Date date,int amount){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR, amount);
return cal.getTime();
}获取某月的天数
/**
* 获取某月的天数
*
* @param year
* 年份
* @param month
* 月份
* @return 天数
*/
public static int getDaysByMonth(int year, int month) {
Calendar c = Calendar.getInstance();
c.set(year, month, 0);
return c.getActualMaximum(Calendar.DAY_OF_MONTH);
}获取本月第一天
/**
* 获取本月第一天
*
* @param date
* @return
*/
public static Date firstOfMonth(Date date) {
return firstOfMonth(date, 0);
}
/**
* 获取基于当前时间的月初
*
* @param date 当前时间
* @param i 1 下月 -1 上月
* @return
*/
public static Date firstOfMonth(Date date, int i) {
if (i != 0) {
date = addMonths(date, i);
}
return strToDate(dateToStr(date, "yyyy-MM") + "-01", "yyyy-MM-dd");
}获取本月最后一天
/**
* 获取本月最后一天
*
* @param date
* @return
*/
public static Date lastOfMonth(Date date) {
return lastOfMonth(date, 0);
}
/**
* 获取基于当前时间的月末
*
* @param date 当前时间
* @param i 1 下月 -1 上月
* @return
*/
public static Date lastOfMonth(Date date, int i) {
if (i != 0) {
date = addMonths(date, i);
}
date = date2SimpleDate(date);
Calendar c = Calendar.getInstance();
c.setTime(date);
int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);
return strToDate(dateToStr(date, "yyyy-MM") + "-" + days, "yyyy-MM-dd");
}字符串转BigDecimal数值
/**
* 字符串转数值
* @param val
* @return
*/
public static BigDecimal StrConvertDecimal(String val) {
if(WsdStringUtils.isNotBlank(val)) {
val = val.replaceAll("\\,", "");
return new BigDecimal(val);
}
return null;
}object转数值型
/**
* 转数值型
* @param val
* @return
*/
public static BigDecimal convertDecimal(Object val) {
if(val != null) {
return new BigDecimal(val.toString().replaceAll("\\,", ""));
}
return null;
}集合增加
public static void addAll(Collection collection, Iterator iterator) {
while(iterator.hasNext()) {
collection.add(iterator.next());
}
}
public static void addAll(Collection collection, Enumeration enumeration) {
while(enumeration.hasMoreElements()) {
collection.add(enumeration.nextElement());
}
}
public static void addAll(Collection collection, Object[] elements) {
int i = 0;
for(int size = elements.length; i < size; ++i) {
collection.add(elements[i]);
}
}获取集合大小
public static int size(Object object) {
int total = 0;
if (object instanceof Map) {
total = ((Map)object).size();
} else if (object instanceof Collection) {
total = ((Collection)object).size();
} else if (object instanceof Object[]) {
total = ((Object[])((Object[])object)).length;
} else if (object instanceof Iterator) {
Iterator it = (Iterator)object;
while(it.hasNext()) {
++total;
it.next();
}
} else if (object instanceof Enumeration) {
Enumeration it = (Enumeration)object;
while(it.hasMoreElements()) {
++total;
it.nextElement();
}
} else {
if (object == null) {
throw new IllegalArgumentException("Unsupported object type: null");
}
try {
total = Array.getLength(object);
} catch (IllegalArgumentException var3) {
throw new IllegalArgumentException("Unsupported object type: " + object.getClass().getName());
}
}
return total;
}判断接环是否为空
public static boolean isEmpty(Collection coll) {
return coll == null || coll.isEmpty();
}
public static boolean isNotEmpty(Collection coll) {
return !isEmpty(coll);
}按指定长度分割数组
/**
* 按指定长度分割数组
*
* @param list
* @param groupSize
* @param <T>
* @return
*/
public static <T> List<List<T>> splitList(List<T> list, int groupSize) {
int length = list.size();
// 计算可以分成多少组
int num = (length + groupSize - 1) / groupSize;
List<List<T>> newList = new ArrayList<>(num);
for (int i = 0; i < num; i++) {
// 开始位置
int fromIndex = i * groupSize;
// 结束位置
int toIndex = Math.min((i + 1) * groupSize, length);
newList.add(list.subList(fromIndex, toIndex));
}
return newList;
}判断字符串是否为空
public static boolean isEmpty(String str) {
return str == null || str.length() == 0;
}
public static boolean isNotEmpty(String str) {
return !isEmpty(str);
}
public static boolean isBlank(String str) {
int strLen;
if (str != null && (strLen = str.length()) != 0) {
for(int i = 0; i < strLen; ++i) {
if (!Character.isWhitespace(str.charAt(i))) {
return false;
}
}
return true;
} else {
return true;
}
}
public static boolean isNotBlank(String str) {
return !isBlank(str);
}字符串转集合,根据分割符
public static List<String> strToList(String source, String split) {
if (StringUtils.isNotEmpty(source)) {
return arrToList(source.split(split));
} else {
return new ArrayList<String>();
}
}
public static <T> List<T> arrToList(T[] source) {
List<T> result;
if (source != null) {
result = new ArrayList<T>(source.length << 1);
for (T t : source) {
result.add(t);
}
} else {
result = new ArrayList<T>();
}
return result;
}集合转sql in语句
/**
* 生成in语句
* @param coll 值列表
* @return 形如('a','b')或(1,2,3)的语句
*/
public static String getInString(Collection<?> coll) {
if(null == coll || coll.size()==0){
return "('-1')"; //避免语法错误
}
StringBuilder sb = new StringBuilder();
sb.append("(");
for(Object obj : coll) {
if(obj == null) continue;
sb.append(',');
if (obj instanceof Date) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sb.append("'").append(df.format((Date)obj)).append("'");
} else if (obj instanceof String) {
if (!((String) obj).startsWith("'")) {
sb.append("'");
}
sb.append(obj);
if (!((String) obj).endsWith("'")) {
sb.append("'");
}
} else if (obj instanceof WsdBasicDto) {
sb.append("'").append(((WsdBasicDto)obj).getId()).append("'");
} else if (obj instanceof WsdEntity) {
sb.append("'").append(((WsdEntity)obj).getId()).append("'");
} else {
sb.append(obj);
}
}
sb.delete(1, 2); //删除多加的","
sb.append(")");
String s = sb.toString();
if ("()".equals(s)) { // 避免语法错误
s = "('-1')";
}
return s;
}
/**
* 生成in语句
* @param coll 值列表
* @param field 字段名
* @return 形如('a','b')或(1,2,3)的语句
*/
public static String getInString(Collection<?> coll,String field) {
if(null == coll || coll.size()==0){
return field + " in ('-1')"; //避免语法错误
}
StringBuilder sb = new StringBuilder();
ArrayList<Object> list =new ArrayList<Object>(coll);
for (int i = 0; i < list.size(); i++) {
Object obj = list.get(i);
String val = "";
if(obj != null){
if (obj instanceof Date) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
val += "'" + df.format((Date)obj) + "'";
} else if (obj instanceof String) {
if (!((String) obj).startsWith("'")) {
val += "'";
}
val += obj.toString();
if (!((String) obj).endsWith("'")) {
val += "'";
}
} else if (obj instanceof WsdBasicDto) {
val += "'" + ((WsdBasicDto)obj).getId() + "'";
} else if (obj instanceof WsdEntity) {
val += "'" + ((WsdEntity)obj).getId() + "'";
} else {
val += (String)obj;
}
}
else{
val = "'-1'";
}
if (i != 0 && (i % 500) == 0) {
sb.append(") or "+ field +" in (" + val);
} else {
if(i == 0){
sb.append("("+ field +" in(");
}
else{
sb.append(",");
if(sb.toString().lastIndexOf("(") != (sb.toString().length() - 1)){
}
}
sb.append(val);
}
}
sb.append("))");
String s = sb.toString();
if ("))".equals(s)) { // 避免语法错误
s = "('-1')";
}
return s;
}生成分隔符拼接的字符串
/**
* 生成分隔符拼接的字符串
* @param coll 对象列表
* @param propName 对象属性名称
* @param separator 分隔符
* @return
*/
public static String getSeparatorString(Collection<?> coll, String propName, String separator) {
StringBuilder sb = new StringBuilder();
for(Object obj : coll){
try {
sb.append(separator).append(WsdBeanUtils.getProperty(obj, propName));
} catch (Exception e) {
WsdExceptionUtils.ignoreException(logger, e);
}
}
sb.delete(0, separator.length());
return sb.toString();
}
/**
* 将字符数组拼接成由 separator 分隔开的字符串
* @author ChenWen 2010-12-09
*/
public static String joinToString(final String[] src, String separator){
if(src == null) return "";
if(separator == null) separator = ",";
StringBuffer dest = new StringBuffer();
for(String s : src) {
dest.append(s).append(separator).append(" ");
}
dest.delete(dest.lastIndexOf(separator), dest.length());
return dest.toString();
}
/**
* 将字符集拼接成由 separator 分隔开的字符串
* @author ChenWen 2010-12-09
*/
public static String joinToString(final Collection<String> src, String separator){
if(WsdCollectionUtils.isEmpty(src)) return "";
if(separator == null) separator = ",";
StringBuffer dest = new StringBuffer();
for(String s : src) {
dest.append(s).append(separator).append("");
}
dest.delete(dest.lastIndexOf(separator), dest.length());
return dest.toString();
}
/**
* 将键值对数组拼接成由 entrySeparator和kvSeparator 分隔开的字符串
* @author ChenWen 2010-12-29
*/
public static String joinToString(final Object[] keys, Object[] values,
String entrySeparator, String kvSeparator){
if(WsdArrayUtils.isEmpty(keys)) return "";
/* 如果值数组(values)为空,则新构造一个长度和键数组(keys)相等的数据 */
if(WsdArrayUtils.isEmpty(values)) {
values = new Object[keys.length];
// Arrays.fill(values, null);
/* 如果值数组(values)不为空,但长度小于键数组(keys),则新构造一个长度和键数组(keys)相等的数据,在保留原有值的基础上让其他元素为null */
} else if(values.length < keys.length) {
Object[] temp = new Object[keys.length];
System.arraycopy(values, 0, temp, 0, values.length);
// for(int i = values.length; i < temp.length; i ++) {
// temp[i] = null;
// }
values = temp;
}
if(kvSeparator == null) kvSeparator = "=";
if(entrySeparator == null) entrySeparator = ",";
StringBuffer dest = new StringBuffer();
dest.append(keys[0]).append(kvSeparator).append(values[0]);
for(int i = 1; i < keys.length; i ++) {
dest.append(entrySeparator).append(keys[i]).append(kvSeparator).append(values[i]);
}
return dest.toString();
}判断两个字符串是否相等
/**
* 比较两个字符串的相等性。
* @return true:相等 , false:不等 .
* @author ChenWen 2010-12-21
*/
public static boolean equals(String str1, String str2) {
return equals(str1, str2, false, false);
}
/**
* 比较两个字符串的相等性。
* @param ignoreCase 是否忽略大小写
* @param trim 是否截取首尾的空白符
* @return true:相等 , false:不等 .
* @author ChenWen 2010-12-21
*/
public static boolean equals(String str1, String str2, boolean ignoreCase, boolean trim) {
if(str1 == null && str2 == null) return true;
if(str1 == null || str2 == null) return false;
if(trim) {
str1 = str1.trim();
str2 = str2.trim();
}
if(ignoreCase) {
return str1.equalsIgnoreCase(str2);
}
return str1.equals(str2);
}贡献者
更新日志
2026/4/5 03:39
查看所有更新日志
fb8bc-更新为vuepress于