我就存一个工具类:ToolUtils.java
import com.chenggutek.cloud.riskctrl.biz.cashloan.comm.model.base.constant.CashloanConstants;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.reflect.Array;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Map.Entry;
/**
* 高频方法集合类
*/
public class ToolUtils {
/**
* 获取随机位数的字符串
*
* @Date 2017/8/24 14:09
*/
public static String getRandomString(int length) {
String base = "abcdefghijklmnopqrstuvwxyz0123456789";
Random random = new Random();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
int number = random.nextInt(base.length());
sb.append(base.charAt(number));
}
return sb.toString();
}
/**
* 获取随机位数的数字字符串
*
* @Date 2017/8/24 14:09
*/
public static String getRandomMathString(int length) {
Random random = new Random();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
int number = random.nextInt(10);
sb.append(number);
}
return sb.toString();
}
/**
* 获取异常的具体信息
*
* @Date 2017/3/30 9:21
* @version 2.0
*/
public static String getExceptionMsg(Exception e) {
StringWriter sw = new StringWriter();
try {
e.printStackTrace(new PrintWriter(sw));
} finally {
try {
sw.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
return sw.getBuffer().toString().replaceAll("\\$", "T");
}
/**
* 比较两个对象是否相等。
* 相同的条件有两个,满足其一即可:
* 1. obj1 == null && obj2 == null; 2. obj1.equals(obj2)
*
* @param obj1 对象1
* @param obj2 对象2
* @return 是否相等
*/
public static boolean equals(Object obj1, Object obj2) {
return (obj1 != null) ? (obj1.equals(obj2)) : (obj2 == null);
}
/**
* 计算对象长度,如果是字符串调用其length函数,集合类调用其size函数,数组调用其length属性,其他可遍历对象遍历计算长度
*
* @param obj 被计算长度的对象
* @return 长度
*/
public static int length(Object obj) {
if (obj == null) {
return 0;
}
if (obj instanceof CharSequence) {
return ((CharSequence) obj).length();
}
if (obj instanceof Collection) {
return ((Collection>) obj).size();
}
if (obj instanceof Map) {
return ((Map, ?>) obj).size();
}
int count;
if (obj instanceof Iterator) {
Iterator> iter = (Iterator>) obj;
count = 0;
while (iter.hasNext()) {
count++;
iter.next();
}
return count;
}
if (obj instanceof Enumeration) {
Enumeration> enumeration = (Enumeration>) obj;
count = 0;
while (enumeration.hasMoreElements()) {
count++;
enumeration.nextElement();
}
return count;
}
if (obj.getClass().isArray() == true) {
return Array.getLength(obj);
}
return -1;
}
/**
* 对象中是否包含元素
*
* @param obj 对象
* @param element 元素
* @return 是否包含
*/
public static boolean contains(Object obj, Object element) {
if (obj == null) {
return false;
}
if (obj instanceof String) {
if (element == null) {
return false;
}
return ((String) obj).contains(element.toString());
}
if (obj instanceof Collection) {
return ((Collection>) obj).contains(element);
}
if (obj instanceof Map) {
return ((Map, ?>) obj).values().contains(element);
}
if (obj instanceof Iterator) {
Iterator> iter = (Iterator>) obj;
while (iter.hasNext()) {
Object o = iter.next();
if (equals(o, element)) {
return true;
}
}
return false;
}
if (obj instanceof Enumeration) {
Enumeration> enumeration = (Enumeration>) obj;
while (enumeration.hasMoreElements()) {
Object o = enumeration.nextElement();
if (equals(o, element)) {
return true;
}
}
return false;
}
if (obj.getClass().isArray() == true) {
int len = Array.getLength(obj);
for (int i = 0; i < len; i++) {
Object o = Array.get(obj, i);
if (equals(o, element)) {
return true;
}
}
}
return false;
}
/**
* 对象是否不为空(新增)
*
* @param o String,List,Map,Object[],int[],long[]
* @return
*/
public static boolean isNotEmpty(Object o) {
return !isEmpty(o);
}
/**
* 对象是否为空
*
* @param o String,List,Map,Object[],int[],long[]
* @return
*/
@SuppressWarnings("rawtypes")
public static boolean isEmpty(Object o) {
if (o == null) {
return true;
}
if (o instanceof String) {
if (o.toString().trim().equals("")) {
return true;
}
} else if (o instanceof List) {
if (((List) o).size() == 0) {
return true;
}
} else if (o instanceof Map) {
if (((Map) o).size() == 0) {
return true;
}
} else if (o instanceof Set) {
if (((Set) o).size() == 0) {
return true;
}
} else if (o instanceof Object[]) {
if (((Object[]) o).length == 0) {
return true;
}
} else if (o instanceof int[]) {
if (((int[]) o).length == 0) {
return true;
}
} else if (o instanceof long[]) {
if (((long[]) o).length == 0) {
return true;
}
}
return false;
}
/**
* 对象组中是否存在 Empty Object
*
* @param os 对象组
* @return
*/
public static boolean isOneEmpty(Object... os) {
for (Object o : os) {
if (isEmpty(o)) {
return true;
}
}
return false;
}
/**
* 对象组中是否全是 Empty Object
*
* @param os
* @return
*/
public static boolean isAllEmpty(Object... os) {
for (Object o : os) {
if (!isEmpty(o)) {
return false;
}
}
return true;
}
/**
* 是否为数字
*
* @param obj
* @return
*/
public static boolean isNum(Object obj) {
try {
Integer.parseInt(obj.toString());
} catch (Exception e) {
return false;
}
return true;
}
/**
* 如果为空, 则调用默认值
*
* @param str
* @return
*/
public static Object getValue(Object str, Object defaultValue) {
if (isEmpty(str)) {
return defaultValue;
}
return str;
}
/**
* 强转->string,并去掉多余空格
*
* @param str
* @return
*/
public static String toStr(Object str) {
return toStr(str, "");
}
/**
* 强转->string,并去掉多余空格
*
* @param str
* @param defaultValue
* @return
*/
public static String toStr(Object str, String defaultValue) {
if (null == str) {
return defaultValue;
}
return str.toString().trim();
}
/**
* map的key转为小写
*
* @param map
* @return Map
*/
public static Map caseInsensitiveMap(Map map) {
Map tempMap = new HashMap<>();
for (String key : map.keySet()) {
tempMap.put(key.toLowerCase(), map.get(key));
}
return tempMap;
}
/**
* 获取map中第一个数据值
*
* @param Key的类型
* @param Value的类型
* @param map 数据源
* @return 返回的值
*/
public static V getFirstOrNull(Map map) {
V obj = null;
for (Entry entry : map.entrySet()) {
obj = entry.getValue();
if (obj != null) {
break;
}
}
return obj;
}
/**
* 创建StringBuilder对象
*
* @return StringBuilder对象
*/
public static StringBuilder builder(String... strs) {
final StringBuilder sb = new StringBuilder();
for (String str : strs) {
sb.append(str);
}
return sb;
}
/**
* 创建StringBuilder对象
*
* @return StringBuilder对象
*/
public static void builder(StringBuilder sb, String... strs) {
for (String str : strs) {
sb.append(str);
}
}
/**
* 去掉指定后缀
*
* @param str 字符串
* @param suffix 后缀
* @return 切掉后的字符串,若后缀不是 suffix, 返回原字符串
*/
public static String removeSuffix(String str, String suffix) {
if (isEmpty(str) || isEmpty(suffix)) {
return str;
}
if (str.endsWith(suffix)) {
return str.substring(0, str.length() - suffix.length());
}
return str;
}
/**
* 判断是否是windows操作系统
*
* @Date 2017/5/24 22:34
*/
public static Boolean isWinOs() {
String os = System.getProperty("os.name");
if (os.toLowerCase().startsWith("win")) {
return true;
} else {
return false;
}
}
/**
* 获取临时目录
*
* @Date 2017/5/24 22:35
*/
public static String getTempPath() {
return System.getProperty("java.io.tmpdir");
}
/**
* 把一个数转化为int
*
* @Date 2017/11/15 下午11:10
*/
public static Integer toInt(Object val) {
if (val instanceof Double) {
BigDecimal bigDecimal = new BigDecimal((Double) val);
return bigDecimal.intValue();
} else {
return Integer.valueOf(val.toString());
}
}
/**
* 判断是否只包含字母和数字
* @param str
* @return
*/
public static boolean isNumOrLetter(String str) {
return str.matches("[A-Za-z0-9]+");
}
/**
* 判断是否为都是数字
* @param str
* @return
*/
public static boolean isAllNum(String str) {
return str.matches("[0-9]+");
}
/**
* 判断是否为手机号
* @param mobile
* @return
*/
public static boolean isMobileNum(String mobile) {
return mobile.matches("^(1)\\d{10}$");
}
/**
* 判断是否为汉字
* @param str
* @return
*/
public static boolean isHanZi(String str) {
char ch = str.charAt(0);
return (ch >= 0x4E00 && ch <= 0x9FA5);
}
/**
* 校验是否为6-20位数字加字母
*/
public static boolean checkPwd(String pwd) {
String regex = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$";
if (pwd == null) {
return false;
}
boolean result = pwd.matches(regex);
return result;
}
/**
* 生成交易单号
* @return
*/
public static String getOrderSn(String prefix, String product) {
return prefix + product + System.currentTimeMillis();
}
/**
* 生成内部订单号
* @return
*/
public static String getOrderNo(int randNum) {
return System.currentTimeMillis() + getRandomMathString(randNum);
}
/**
* 通过渠道信息或者设备信息获取客户端类型
* @return
*/
public static Integer getClientType(String appMetaData) {
if (StringUtils.isEmpty(appMetaData)) {
return CashloanConstants.rulesClient.ANDROID;
}
if ((!StringUtils.isEmpty(appMetaData) && appMetaData.replaceAll(" ", "").toLowerCase().contains("ios"))
|| (!StringUtils.isEmpty(appMetaData) && appMetaData.replaceAll(" ", "").toLowerCase().contains("iphone"))) {
return CashloanConstants.rulesClient.IOS;
}
return CashloanConstants.rulesClient.ANDROID;
}
public static String getUuid() {
String uuid = UUID.randomUUID().toString();
char[] ar = uuid.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < ar.length; i++)
{
if (ar[i] != '-')
{
sb.append(ar[i]);
}
}
return sb.toString();
}
public static void main(String[] args) {
// 2018-09-21T14:54:20.000+0800
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date parse = sdf.parse("2018-09-21T14:54:20.000+0800");
System.out.println(parse);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
你是技术宅么?那就加入我们吧!点击下方链接 或 扫描二维码 即可。
欢迎加入 CSDN技术交流群2:(点击即可加群)QQ群:456543087
CSDN技术交流群(已满员):(点击即可加群)QQ群:681223095。
商务合作@群主,谢谢!
因经常有人留言,未能及时查看到和回复,所以特建此群,以方便交流。方便问题讨论,有问题和没有问题的小伙伴均可加入,用作自我学习和共同进步。本博主不一定长期在线,但是qq群里会有很多热心的小伙伴,大家一起讨论解决问题。