Generating 8-character only UUIDs

后端 未结 8 1463
[愿得一人]
[愿得一人] 2020-11-27 03:22

UUID libraries generate 32-character UUIDs.

I want to generate 8-character only UUIDs, is it possible?

8条回答
  •  迷失自我
    2020-11-27 04:04

    You can try RandomStringUtils class from apache.commons:

    import org.apache.commons.lang3.RandomStringUtils;
    
    final int SHORT_ID_LENGTH = 8;
    
    // all possible unicode characters
    String shortId = RandomStringUtils.random(SHORT_ID_LENGTH);
    

    Please keep in mind, that it will contain all possible characters which is neither URL nor human friendly.

    So check out other methods too:

    // HEX: 0-9, a-f. For example: 6587fddb, c0f182c1
    shortId = RandomStringUtils.random(8, "0123456789abcdef"); 
    
    // a-z, A-Z. For example: eRkgbzeF, MFcWSksx
    shortId = RandomStringUtils.randomAlphabetic(8); 
    
    // 0-9. For example: 76091014, 03771122
    shortId = RandomStringUtils.randomNumeric(8); 
    
    // a-z, A-Z, 0-9. For example: WRMcpIk7, s57JwCVA
    shortId = RandomStringUtils.randomAlphanumeric(8); 
    

    As others said probability of id collision with smaller id can be significant. Check out how birthday problem applies to your case. You can find nice explanation how to calculate approximation in this answer.

提交回复
热议问题