I'm looking for the best way to create a unique ID as a String in Java.
Any guidance appreciated, thanks.
I should mention I'm using Java 5.
I'm looking for the best way to create a unique ID as a String in Java.
Any guidance appreciated, thanks.
I should mention I'm using Java 5.
There are three way to generate unique id in java.
1) the UUID class provides a simple means for generating unique ids.
UUID id = UUID.randomUUID();
System.out.println(id);
2) SecureRandom and MessageDigest
//initialization of the application
SecureRandom prng = SecureRandom.getInstance("SHA1PRNG");
//generate a random number
String randomNum = new Integer(prng.nextInt()).toString();
//get its digest
MessageDigest sha = MessageDigest.getInstance("SHA-1");
byte[] result = sha.digest(randomNum.getBytes());
System.out.println("Random number: " + randomNum);
System.out.println("Message digest: " + new String(result));
3) using a java.rmi.server.UID
UID userId = new UID();
System.out.println("userId: " + userId);
Unique ID with count information
import java.util.concurrent.atomic.AtomicLong;
public class RandomIdUtils {
private static AtomicLong atomicCounter = new AtomicLong();
public static String createId() {
String currentCounter = String.valueOf(atomicCounter.getAndIncrement());
String uniqueId = UUID.randomUUID().toString();
return uniqueId + "-" + currentCounter;
}
}