I want to use UUIDs whose alphanumeric order is the same as their chronological order. So I'm generating Version 4 UUIDs ( http://en.wikipedia.org/wiki/Universally_Unique_Identifier#Version_4_.28random.29) as follows:
public class Id { static Random random = new Random(); public static String next() { // Format: xxxxxxxx-xxxx-4xxx-8xxx-xxxxxxxxxxxx long high = (System.currentTimeMillis() << 16) | 0x4000 | random.nextInt(4096); long low = (random.nextLong() >>> 4) | 0x8000000000000000L; UUID uuid = new UUID(high, low); return uuid.toString(); } } Is there anything wrong with this idea?