9

I'm trying to make the java UUID shorter while preserving the same uniqueness as the UUID has. I wrote the following code:

public static void main(String[] args) { UUID uid=UUID.randomUUID(); String shortId=to62System(uid.getMostSignificantBits())+ to62System(uid.getLeastSignificantBits()); System.out.println(shortId); } static char[] DIGITS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray(); static int RADIX = DIGITS.length; public static String to62System(long value) { if (value == 0) { return "0"; } else { char[] buf = new char[11]; int charPos = 10; long i = value; while (i != 0) { buf[charPos--] = DIGITS[Math.abs((int) (i % RADIX))]; i /= RADIX; } return new String(buf, charPos + 1, (10 - charPos)); } } 

Am I doing it right or did I overlooked something important?

6
  • 2
    Just curious, why would you do this? Commented Dec 3, 2013 at 20:31
  • 2
    You can't: blogs.msdn.com/b/oldnewthing/archive/2008/06/27/8659071.aspx (edit: I'm not actually sure if randomUUID() uses the same algorithm, but chances are good that it's still not a great idea). Commented Dec 3, 2013 at 20:33
  • 1
    Unique over what space? That constrains the size of the ID. Commented Dec 3, 2013 at 20:33
  • @Zavior I need as short as possible worldwide unique id, usable in URL. It has to be short for example to be usable in the tweets. Yes, there are some url-shortening services, but I donnot want to use it. Commented Dec 5, 2013 at 19:28
  • 1
    @WPrecht worldwide unique. Commented Dec 5, 2013 at 19:37

3 Answers 3

5

I use org.apache.commons.codec.binary.Base64 to convert a UUID into a url-safe unique string that is 22 characters in length and has the same uniqueness as UUID.

I posted my code on Storing UUID as base64 String

Sign up to request clarification or add additional context in comments.

Comments

3

Take a look at FriendlyId library. This library allow to encode UUID to Base62 string (Url62) and back. Uniqueness is achieved and encoded string is shorter.

https://github.com/Devskiller/friendly-id

Comments

-1

I believe even once you get it down to 22 characters by changing to base whatever, you can safely truncate a few characters and still be reasonably certain you won't get any collisions, as you probably know the astronomically large numbers involved. LOL loved the first guy's response thinking u were just like grabbing some characters from a standard UUID and calling it a day haha

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.