分析:既然是订单号/交易流水号,首先是不能重复,其次需考虑到性能问题。
设计如下:
"HF"+时间戳+随机数+循环数
代码如下:
int x = 1000;
for(int i=0;i<10;i++){
x+=1;
System.out.println("HF"+System.currentTimeMillis()+RandomUtils.getNo(2)+x);
}
其中:RandomUtils类
package com.test.common.util;
import org.apache.commons.lang.RandomStringUtils;
public class RandomUtils
{
private static String randString = "";
public synchronized static String getNo(int k)
{
if (randString.length() > 20000)
{
randString = "";
}
String rno = getNoNo(k);
while (randString.indexOf(rno + ",") >= 0)
{
rno = getNoNo(k);
}
randString += rno + ",";
return rno;
}
private static String getNoNo(int k)
{
try
{
Thread.sleep(1);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
return RandomStringUtils.randomNumeric(k);
}
}
RandomUtils.java