JAVA 產生無重複8位隨機碼

來源:互聯網
上載者:User

標籤:

短8位UUID思想其實借鑒微博短網域名稱的產生方式,但是其重複機率過高,而且每次產生4個,需要隨即選取一個。

本演算法利用62個可列印字元,通過隨機產生32位UUID,由於UUID都為十六進位,所以將UUID分成8組,每4個為一組,然後通過模62操作,結果作為索引取出字元,

這樣重複率大大降低。


經測試,在產生一千萬個資料也沒有出現重複,完全滿足大部分需求。

代碼貼出來供大家參考。

public static String[] chars = new String[] { "a", "b", "c", "d", "e", "f",            "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",            "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",            "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",            "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",            "W", "X", "Y", "Z" };public static String generateShortUuid() {    StringBuffer shortBuffer = new StringBuffer();    String uuid = UUID.randomUUID().toString().replace("-", "");    for (int i = 0; i < 8; i++) {        String str = uuid.substring(i * 4, i * 4 + 4);        int x = Integer.parseInt(str, 16);        shortBuffer.append(chars[x % 0x3E]);    }    return shortBuffer.toString();}


JAVA 產生無重複8位隨機碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.