第一个方法直接调用就可以生成num位的流水号(该流水号是以当前时间:年月日时分秒开始的),保证每一个都不会重复。注意,传入的参数num数字要大于13要不然生成的随机数没有什么意义。
第二个方法直接调用就可以生成完全随机的流水号,根据当前时间戳生成的,可以保证唯一。
/**
* 可以获取num位数字不重复的id
*
* @param num 流水号位数
* @return 得到num位不重复的数字
*/
public static String getRandomNo(int num) {
StringBuffer claimNoSb = new StringBuffer();
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
String DateTemp = (formatter.format(new Date()));
claimNoSb.append(DateTemp);
int count = num - DateTemp.length();
claimNoSb.append(randString(count));
return claimNoSb.toString();
}
/**
* 产生随机n位字符串
*
* @param length
* @return
*/
public static String randString(int length) {
Random ran = new Random(System.currentTimeMillis());
long lon = ran.nextLong();
String base = (lon + "").replaceAll("-", "");
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();
}