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集合来确保生成的工号是唯一的。递增生成方法则通过递增当前工号的方式来生成工号。无论使用哪种方法,都可以根据实际业务需求进行相应的调整。希望本文对您有所帮助!