Java生成UUID


什么是UUID?
UUID是Universally Unique Identifier的縮寫,它是在一定的范圍內(從特定的名字空間到全球)唯一的機器生成的標識符。UUID具有以下涵義:

經由一定的算法機器生成
為了保證UUID的唯一性,規范定義了包括網卡MAC地址、時間戳、名字空間(Namespace)、隨機或偽隨機數、時序等元素,以及從這些元素生成UUID的算法。UUID的復雜特性在保證了其唯一性的同時,意味着只能由計算機生成。

非人工指定,非人工識別
UUID是不能人工指定的,除非你冒着UUID重復的風險。UUID的復雜性決定了“一般人“不能直接從一個UUID知道哪個對象和它關聯。

在特定的范圍內重復的可能性極小
UUID的生成規范定義的算法主要目的就是要保證其唯一性。但這個唯一性是有限的,只在特定的范圍內才能得到保證,這和UUID的類型有關(參見UUID的版本)。

UUID是16字節128位長的數字,通常以36字節的字符串表示,示例如下:

3F2504E0-4F89-11D3-9A0C-0305E82C3301

其中的字母是16進制表示,大小寫無關。

GUID(Globally Unique Identifier)是UUID的別名;但在實際應用中,GUID通常是指微軟實現的UUID。

UUID的版本

UUID具有多個版本,每個版本的算法不同,應用范圍也不同。

首先是一個特例--Nil UUID--通常我們不會用到它,它是由全為0的數字組成,如下:

00000000-0000-0000-0000-000000000000

 

Java源碼:

package tools.uuid;


import java.util.UUID;

public class MyUUID {
    public static String getUUID() {
        UUID uuid = UUID.randomUUID();
        String str = uuid.toString();
        System.out.println("原始UUID: " + str);
        // 去掉"-"符號
        String temp = str.substring(0, 8) + str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) + str.substring(24);
        System.out.println("去掉\"-\"符號: " + temp);
        return temp;
    }

    //獲得指定數量的UUID
    public static String[] getUUID(int number) {
        if (number < 1) {
            return null;
        }
        String[] uuids = new String[number];
        for (int i = 0; i < number; i++) {
            uuids[i] = getUUID();
        }
        return uuids;
    }

    public static void main(String[] args) {
        System.out.println("---- 獲取單個UUID ----");
        String uuid = getUUID();
        System.out.println("---- 獲取多個UUID ----");
        String[] uuids = getUUID(5);
        for (int i = 0; i < uuids.length; i++) {
            System.out.println("uuids[" + i + "]=====" + uuids[i]);
        }
    }

}

 

運行結果:

---- 獲取單個UUID ----
原始UUID: f4958b2a-bdc8-4ea5-bed8-1246381c116a
去掉"-"符號: f4958b2abdc84ea5bed81246381c116a
---- 獲取多個UUID ----
原始UUID: f1791418-6eb5-4538-bd2b-9f6547d8a967
去掉"-"符號: f17914186eb54538bd2b9f6547d8a967
原始UUID: e3b6451e-6073-4c11-9f35-b24b49b8fdab
去掉"-"符號: e3b6451e60734c119f35b24b49b8fdab
原始UUID: 9d53efac-d85e-486c-8bef-3009bb0654b0
去掉"-"符號: 9d53efacd85e486c8bef3009bb0654b0
原始UUID: 3c911454-034e-4b17-8daa-dd616b502744
去掉"-"符號: 3c911454034e4b178daadd616b502744
原始UUID: 9a634db6-b68b-4fa5-8389-b3ee35fc5992
去掉"-"符號: 9a634db6b68b4fa58389b3ee35fc5992
uuids[0]=====f17914186eb54538bd2b9f6547d8a967
uuids[1]=====e3b6451e60734c119f35b24b49b8fdab
uuids[2]=====9d53efacd85e486c8bef3009bb0654b0
uuids[3]=====3c911454034e4b178daadd616b502744
uuids[4]=====9a634db6b68b4fa58389b3ee35fc5992

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM