Java生成有规律不重复的随机编码

时间:2023-01-10 20:44:40

1、需求生成有规律不重复的随机编码
2、解决随机生成不重复编码问题
3、编码如下:
/*
@param maxOrderno // 从数据库查询出的最大编号
*/
public static synchronized List getEncode(String maxOrderno,int count)
{
String Orderno = null;
SimpleDateFormat format = new SimpleDateFormat(“yyMMdd”); // 时间字符串产生方式
String uid_pfix = format.format(new Date()); // 组合流水号前一部分,时间字符串,如:20160126
if (maxOrderno != null && maxOrderno.contains(uid_pfix)) {
String uid_end = maxOrderno.substring(6, 10); // 截取字符串最后四位,结果:0001
System.out.println(“uid_end=” + uid_end);
int endNum = Integer.parseInt(uid_end); // 把String类型的0001转化为int类型的1
System.out.println(“endNum=” + endNum);
int tmpNum = 10000 + endNum + 1; // 结果10002
System.out.println(“tmpNum=” + tmpNum);
Orderno = uid_pfix + subStr(“” + tmpNum, 1);// 把10002首位的1去掉,再拼成201601260002字符串
}
else
{
Orderno = uid_pfix + “0001”;
}
List arry = new ArrayList();
arry.add(Orderno);
//批量生成多个
while (count>1)
{
Orderno = String.valueOf(Integer.parseInt(Orderno.trim())+1);
arry.add(Orderno);
count–;
}
return arry;
}