java生成UUID

简介

UUID是通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。目前最广泛应用的UUID,是微软公司的全局唯一标识符(GUID),而其他重要的应用,则有Linux ext2/ext3文件系统、LUKS加密分区、GNOME、KDE、Mac OS X等等。另外我们也可以在e2fsprogs包中的UUID库找到实现。

总之一句话,保证在不同时间、不同地点、不同设备上产生的UUID的唯一性,不重复。

Java生成UUID

在java中有现成的api可以直接生成UUID

1
2
3
4
5
6
System.out.println(UUID.randomUUID().toString());
System.out.println(UUID.randomUUID().toString());
System.out.println(UUID.randomUUID().toString());
System.out.println(UUID.randomUUID().toString());
System.out.println(UUID.randomUUID().toString());
System.out.println(UUID.randomUUID().toString());

Click and drag to move

生成的结果每次都不一样,比如

1
2
3
4
5
6
47992182-32cc-4979-88b8-ee1db54b0172
f6162463-4f26-4520-ba4f-f853fb5f8c99
104a8450-7c8f-4c34-839d-5d5902b9cc90
f97389f9-81e6-406e-820a-1da96a68ddac
59a6dc1a-07d6-467b-a6df-eb11207fa168
43daf170-1f79-4e8c-af22-001c32c045c2

Click and drag to move

可看出生成的UUID格式是这样的xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,位数为8-4-4-4-12共32位16进制,中间用”-“号隔开

如果想单纯返回32位16进制,可以用replace去掉“-”号

1
2
3
4
5
6
System.out.println(UUID.randomUUID().toString().replace("-", ""));
System.out.println(UUID.randomUUID().toString().replace("-", ""));
System.out.println(UUID.randomUUID().toString().replace("-", ""));
System.out.println(UUID.randomUUID().toString().replace("-", ""));
System.out.println(UUID.randomUUID().toString().replace("-", ""));
System.out.println(UUID.randomUUID().toString().replace("-", ""));

Click and drag to move

返回结果如下

1
2
3
4
5
6
df12e44ebc3a420c808cdcdc6e650c6d
fdfd016ccbf644e29ccc81e589eeca90
bb08a994992f46feadde1aa576481635
0cc5d367b8024cbcaa8441e4284c1e3a
b7c7ba6bc422456c98226d8ce5cff1f5
c17e81750471463ca064cc2efcf3849e

Click and drag to move