Published 2022-04-08
Generate Unique OrderId or TransactionId
This unique string can be used for generate OrderId or TransactionId.
import java.util.concurrent.TimeUnit;
/**
* The program to generate random unique string.
*
* Created by Amit Kumar Giri on April 08, 2022
*/
public class HelloWorld {
public static void main (String args[]) {
long start = System.nanoTime();
String randomString = generateRandomUniqueString();
long end = System.nanoTime();
long diff = (end-start);
System.out.println("Elapsed Time in NANO seconds: " + diff);
long seconds = TimeUnit.SECONDS.convert(diff, TimeUnit.NANOSECONDS);
System.out.println("Elapsed Time in seconds: " + seconds);
System.out.println(randomString);
}
/**
* This method generates the unique random string efficiently. If you are using any database, takes its
* primary key column. Here, We will use UNIX Epoch Time + the random string.
* Suppose you want to generate a random unique string of length 40 chars.
* Max Size of long: 9223372036854775807
*
* @return String
*/
public static String generateRandomUniqueString () {
StringBuilder sb = new StringBuilder();
int stringLenCount = 40;
long epoch = System.currentTimeMillis();
int epTimeLen = Long.toString(epoch).length();
if (epTimeLen < 19) {
int fillBlank = stringLenCount - epTimeLen - 1; // -1 for underscore
char[] chars = "abcdefghijklmnopqrstuvwxyz1234567890".toCharArray();
while (fillBlank > 0) {
int random = (int) (Math.random() * 1000000000L);
sb.append(chars[random % chars.length]);
fillBlank--;
}
sb.append("_").append(epoch);
}
return sb.toString().toUpperCase();
}
}