java 实现UUID生成9位不重复的随机纯数字,不包含字母和字符
时间: 2024-05-13 09:19:04 浏览: 143
Java中可以使用UUID类来生成唯一标识符,但是UUID生成的字符串包含字母和字符,如果需要生成9位不重复的随机纯数字,可以使用Random类。
以下是一个示例代码:
```java
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class RandomNumberGenerator {
public static void main(String[] args) {
Set<Integer> set = new HashSet<>();
Random random = new Random();
while (set.size() < 9) {
int number = random.nextInt(1000000000);
set.add(number);
}
for (Integer number : set) {
System.out.println(String.format("%09d", number));
}
}
}
```
该代码中,使用了一个Set集合来存储生成的数字,利用了Set集合的不重复性质。使用Random类生成随机数字,并将其添加到Set集合中,直到集合大小达到9为止。最后,将集合中的数字格式化为9位数字字符串输出即可。
相关问题
Java 生成唯一不重复的编号,字母加数字9位,工具类生成,并加注释
以下是一个Java生成唯一不重复的编号的工具类,生成的编号包含9位数字和字母的组合。
```java
import java.security.SecureRandom;
import java.math.BigInteger;
public class UniqueIDGenerator {
private static final int ID_LENGTH = 9; // 编号长度
private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; // 可以出现在编号中的字符
private static SecureRandom random = new SecureRandom();
public static String generateUniqueID() {
StringBuilder builder = new StringBuilder(ID_LENGTH);
for (int i = 0; i < ID_LENGTH; i++) {
int randomIndex = random.nextInt(CHARACTERS.length());
builder.append(CHARACTERS.charAt(randomIndex));
}
return builder.toString();
}
}
```
这个工具类使用了Java的`SecureRandom`类生成随机数,保证生成的编号是具有随机性的。`ID_LENGTH`变量指定了编号的长度,`CHARACTERS`变量存储了可以出现在编号中的字符集合。`generateUniqueID`方法使用一个`StringBuilder`对象生成一个由随机字符组成的字符串,然后返回这个字符串。
需要注意的是,这个工具类生成的编号不是全局唯一的,但是在实际应用中,生成的编号足够随机,概率上可以认为不会重复。如果需要全局唯一的编号,可以考虑使用UUID或者数据库自增长的方式生成。
模拟订单号生成两种方法java
在Java中,模拟订单号的生成通常有两种常见方法:
1. **朴素字符串生成法**:
使用简单的字符集和顺序生成,比如将字母、数字和特殊字符随机组合。例如,可以创建一个固定长度的字符串,并用当前时间戳或其他标识作为初始值,然后通过循环添加随机字符。
```java
public class OrderNumberGenerator {
private static final String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
private int index;
public String generateOrderNo() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 12; ++i) { // 假设订单号长度为12位
sb.append(chars.charAt(index));
index = (index + 1) % chars.length(); // 循环使用字符集
}
return sb.toString();
}
}
```
2. **基于UUID生成**:
另一种方法是利用Java内置的`java.util.UUID`类生成唯一的全局唯一标识符(UUID),然后可以根据需求格式化它成易于阅读的订单号。这种方式更安全,因为几乎不可能有重复的UUID。
```java
import java.util.UUID;
public class OrderNumberGenerator {
public String generateOrderNo() {
UUID uuid = UUID.randomUUID();
return formatUUID(uuid); // 自定义的格式化函数
}
private String formatUUID(UUID uuid) {
return uuid.toString().replaceAll("-", "");
}
}
```
阅读全文