本文目录导读:

我来介绍几种Java UUID工具的封装方式:
基础封装工具类
import java.util.UUID;
public class UUIDUtil {
/**
* 生成标准UUID(带横线)
*/
public static String getUUID() {
return UUID.randomUUID().toString();
}
/**
* 生成不带横线的UUID
*/
public static String getSimpleUUID() {
return UUID.randomUUID().toString().replace("-", "");
}
/**
* 生成指定长度的唯一字符串
*/
public static String getUUID(int length) {
if (length <= 0) {
throw new IllegalArgumentException("长度必须大于0");
}
String uuid = getSimpleUUID();
if (length >= uuid.length()) {
return uuid;
}
return uuid.substring(0, length);
}
/**
* 生成批量UUID
*/
public static List<String> getUUIDList(int count) {
List<String> list = new ArrayList<>(count);
for (int i = 0; i < count; i++) {
list.add(getUUID());
}
return list;
}
}
带格式的UUID工具类
import java.util.UUID;
public class FormatUUIDUtil {
/**
* 生成大写UUID
*/
public static String getUpperUUID() {
return UUID.randomUUID().toString().toUpperCase();
}
/**
* 生成小写UUID
*/
public static String getLowerUUID() {
return UUID.randomUUID().toString().toLowerCase();
}
/**
* 生成自定义格式UUID
* format: 使用{x}占位符,x为0-4的数字
*/
public static String getFormatUUID(String format) {
String uuid = UUID.randomUUID().toString();
String[] parts = uuid.split("-");
StringBuilder sb = new StringBuilder(format);
for (int i = 0; i < parts.length; i++) {
String placeholder = "{" + i + "}";
int index = sb.indexOf(placeholder);
while (index != -1) {
sb.replace(index, index + placeholder.length(), parts[i]);
index = sb.indexOf(placeholder, index + parts[i].length());
}
}
return sb.toString();
}
}
带时间戳的UUID
import java.util.UUID;
public class TimestampUUIDUtil {
/**
* 生成带时间戳的UUID
*/
public static String getTimestampUUID() {
String timestamp = String.valueOf(System.currentTimeMillis());
String uuid = UUID.randomUUID().toString().replace("-", "");
return timestamp + uuid;
}
/**
* 生成带日期格式的UUID
*/
public static String getDateUUID() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String dateStr = sdf.format(new Date());
String uuid = UUID.randomUUID().toString().replace("-", "");
return dateStr + uuid.substring(uuid.length() - 12);
}
/**
* 生成可排序的UUID
*/
public static String getSortableUUID() {
long now = System.currentTimeMillis();
long random = (long) (Math.random() * 1000000);
String uuid = UUID.randomUUID().toString().replace("-", "");
return Long.toHexString(now) + Long.toHexString(random) + uuid.substring(0, 8);
}
}
业务场景专用工具类
import java.util.UUID;
public class BusinessUUIDUtil {
/**
* 生成订单号
*/
public static String getOrderNo() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String dateStr = sdf.format(new Date());
String uuid = UUID.randomUUID().toString().replace("-", "");
return "ORD" + dateStr + uuid.substring(0, 8);
}
/**
* 生成用户ID
*/
public static String getUserId() {
return "U" + System.currentTimeMillis() +
UUID.randomUUID().toString().replace("-", "").substring(0, 8);
}
/**
* 生成文件名称
*/
public static String getFileName(String extension) {
return UUID.randomUUID().toString().replace("-", "") + "." + extension;
}
/**
* 生成短ID(8位)
*/
public static String getShortId() {
return UUID.randomUUID().toString().replace("-", "").substring(0, 8);
}
}
完整工具类示例
import java.util.UUID;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
public final class UUIDHelper {
private UUIDHelper() {
// 私有构造函数,防止实例化
}
/**
* 生成UUID
*/
public static String generate(boolean withHyphen) {
String uuid = UUID.randomUUID().toString();
return withHyphen ? uuid : uuid.replace("-", "");
}
/**
* 生成带前缀的UUID
*/
public static String generateWithPrefix(String prefix) {
return prefix + generate(false);
}
/**
* 生成带格式的UUID
*/
public static String generateWithFormat(UUIDFormat format) {
switch (format) {
case TIMESTAMP:
return System.currentTimeMillis() + generate(false).substring(0, 12);
case DATE:
return new SimpleDateFormat("yyyyMMdd").format(new Date()) + generate(false);
case SEQUENCE:
return generate(false).toUpperCase();
case RANDOM:
return generate(true);
default:
return generate(false);
}
}
public enum UUIDFormat {
TIMESTAMP, DATE, SEQUENCE, RANDOM
}
}
使用示例
public class UUIDExample {
public static void main(String[] args) {
// 基本使用
String uuid1 = UUIDUtil.getUUID();
String uuid2 = UUIDUtil.getSimpleUUID();
String uuid3 = UUIDUtil.getUUID(16);
System.out.println("标准UUID: " + uuid1);
System.out.println("简单UUID: " + uuid2);
System.out.println("指定长度: " + uuid3);
// 业务使用
BusinessUUIDUtil util = new BusinessUUIDUtil();
System.out.println("订单号: " + util.getOrderNo());
System.out.println("用户ID: " + util.getUserId());
System.out.println("文件名: " + util.getFileName("txt"));
// 格式使用
String customFormat = FormatUUIDUtil.getFormatUUID("{0}-{1}-{2}-{3}-{4}");
System.out.println("自定义格式: " + customFormat);
}
}
性能优化建议
public class OptimizedUUIDUtil {
private static final SecureRandom RANDOM = new SecureRandom();
/**
* 高效生成UUID(减少对象创建)
*/
public static String fastUUID() {
byte[] randomBytes = new byte[16];
RANDOM.nextBytes(randomBytes);
// 设置版本4
randomBytes[6] &= 0x0f;
randomBytes[6] |= 0x40;
// 设置变体
randomBytes[8] &= 0x3f;
randomBytes[8] |= 0x80;
StringBuilder sb = new StringBuilder(36);
for (int i = 0; i < 16; i++) {
if (i == 4 || i == 6 || i == 8 || i == 10) {
sb.append('-');
}
sb.append(String.format("%02x", randomBytes[i]));
}
return sb.toString();
}
}
这些封装方式可以根据具体业务需求选择使用,建议:
- 通用场景:使用基础的
UUIDUtil类 - 业务需求:使用专业的
BusinessUUIDUtil - 性能要求:使用优化的
OptimizedUUIDUtil - 格式化需求:使用
FormatUUIDUtil
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播