Java生成3位工号
在许多业务场景中,我们需要为员工生成唯一的工号。这个工号通常用于标识员工的身份和记录员工的相关信息。在本文中,我们将使用Java编程语言来生成一个3位的工号。
工号生成规则
我们希望生成的工号满足以下规则:
- 工号由3位数字组成
- 工号必须是唯一的,不能与已存在的工号重复
方法一:随机生成工号
我们可以使用Java中的Random
类来生成随机数,然后将随机数转换为3位数字。代码如下所示:
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class EmployeeNumberGenerator {
private Set<String> usedNumbers;
public EmployeeNumberGenerator() {
usedNumbers = new HashSet<>();
}
public String generateNumber() {
Random random = new Random();
String number;
do {
number = String.format("%03d", random.nextInt(1000));
} while (usedNumbers.contains(number));
usedNumbers.add(number);
return number;
}
}
上述代码中,我们使用Random
类生成一个0到999之间的随机数,并使用String.format
方法将其格式化为3位数字。如果生成的数字已存在于已使用的工号集合usedNumbers
中,则重新生成。最后,将生成的数字添加到usedNumbers
中,并返回生成的工号。
方法二:递增生成工号
另一种生成工号的方法是递增生成。我们可以将工号的初始值设为"001",然后每次生成工号时递增1,直到生成的工号不与已存在的工号重复为止。代码如下所示:
import java.util.HashSet;
import java.util.Set;
public class EmployeeNumberGenerator {
private Set<String> usedNumbers;
private String currentNumber;
public EmployeeNumberGenerator() {
usedNumbers = new HashSet<>();
currentNumber = "001";
}
public String generateNumber() {
String number = currentNumber;
while (usedNumbers.contains(number)) {
int nextNumber = Integer.parseInt(number) + 1;
number = String.format("%03d", nextNumber);
if (nextNumber > 999) {
// 如果已经达到最大工号,可以抛出异常或者采取其他处理方式
throw new RuntimeException("工号已用尽");
}
}
usedNumbers.add(number);
currentNumber = number;
return number;
}
}
上述代码中,我们使用一个实例变量currentNumber
来保存当前生成的工号。每次生成工号时,我们将当前工号递增1,并判断是否与已存在的工号重复。如果重复,则继续递增,直到生成不重复的工号。最后,将生成的工号添加到usedNumbers
中,并更新当前工号为最新的工号。
关系图
下面是工号生成器的类图表示:
erDiagram
class EmployeeNumberGenerator {
usedNumbers: Set<String>
currentNumber: String
generateNumber()
}
总结
本文介绍了两种生成3位工号的方法:随机生成和递增生成。随机生成方法使用了Random
类和HashSet
集合来确保生成的工号是唯一的。递增生成方法则通过递增当前工号的方式来生成工号。无论使用哪种方法,都可以根据实际业务需求进行相应的调整。希望本文对您有所帮助!