UUID是指通用唯一识别码(Universally Unique Identifier),它是一种软件构建的标准,也是一种生成方式,用于在分布式计算环境中,为许多不同的设备生成统一的唯一标识符。在Java编程语言中,UUID通常用于为对象创建唯一标识符,以便跟踪对象在代码和计算机之间的移动和操作。
一、使用Java自带的UUID类生成UUID
public static String getUUID() { UUID uuid = UUID.randomUUID(); String str = uuid.toString(); str = str.replace("-", ""); return str; }
Java自带的UUID类提供了生成UUID的方法,我们只需要调用该类的静态方法randomUUID(),就可以生成一个UUID。生成的UUID的格式为8-4-4-4-12的十六进制字符串,其中横杠“-”是分隔符。
如果需要去除横杠,我们只需要将字符串中的“-”替换为空字符串即可。
二、使用Apache Commons Lang生成UUID
public static String getUUID() { return RandomStringUtils.random(32, true, true); }
Apache Commons Lang是一个常用的Java开发包,它提供了很多工具类,包括字符串、日期、IO等方面的操作。其中,提供了生成UUID的工具类RandomStringUtils。
我们只需要调用该类的静态方法random(),指定生成UUID的长度和是否包含字母、数字,就可以生成一个UUID。
三、使用Java8的java.util.UUID生成UUID
public static String getUUID() { UUID uuid = UUID.randomUUID(); return uuid.toString().replaceAll("-", ""); }
从Java8开始,UUID类提供了一个静态方法randomUUID(),该方法返回一个随机的UUID。通过调用toString()方法,我们可以将UUID转化为字符串。如果需要去除UUID中的横杠,我们可以使用String类的replaceAll()方法,将“-”替换为空字符串。
四、使用Google的guava库生成UUID
public static String getUUID() { return UUID.randomUUID().toString().replaceAll("-", ""); }
Google的guava库是一个广受欢迎的功能性Java开发包,它提供了许多有用的工具类和函数。其中,提供了一个方便的方法来生成UUID,使用方式与Java自带的UUID类类似。
我们只需要调用UUID类的randomUUID()生成一个UUID,然后调用toString()方法将其转化为字符串,并使用replaceAll()方法去除横杠。
五、使用JDK9的java.util.concurrent.ThreadLocalRandom生成UUID
public static String getUUID() { byte[] bytes = new byte[16]; ThreadLocalRandom.current().nextBytes(bytes); ByteBuffer buffer = ByteBuffer.wrap(bytes); return new UUID(buffer.getLong(), buffer.getLong()).toString().replaceAll("-", ""); }
JDK9中引入了一个新的类ThreadLocalRandom,该类提供了一种线程局部的、更高效的方法来生成随机数,比使用Math.random()或java.util.Random更高效。我们可以使用ThreadLocalRandom生成UUID。
首先,我们需要生成一个16字节的byte数组,然后通过ThreadLocalRandom.current().nextBytes()方法来填充这个数组。接下来,我们将这个byte数组转化为ByteBuffer,并使用ByteBuffer的getLong()方法来获取2个long类型的值。最后,我们使用这2个long类型的值来构造一个UUID,并将其转化为字符串,并使用replaceAll()方法去除横杠。
六、总结
在Java编程中,我们有多种方法可以生成UUID。我们可以使用Java自带的UUID类、Apache Commons Lang、Java8的java.util.UUID类、Google的guava库、JDK9的java.util.concurrent.ThreadLocalRandom等。每种方法都有自己的特点和优劣,需要根据实际情况选择。