什么是实现 ID 的好方法?

Lia*_*iam 2 java uuid

我正在为自己构建一个小项目,每次Employee创建a 时,他们都会获得一个 ID。

此 Id 是通过查找ArrayList.size()生成的。

//Creating the Employee Id
int employeeID = listEmployee.size() +1;
Run Code Online (Sandbox Code Playgroud)

我知道这是一个坏主意,因为在删除员工时,Id 将开始复制。

这是我在创建员工时使用的功能

 public void addHiredEmployee() {
    Scanner kb = new Scanner(System.in);


    System.out.println("Enter Name: ");
    String nameEmployee = kb.nextLine();

    //Creating Id for the employee by getting the last employee in the list 
    //getting their Id and adding 1 to it 
    Employee lastEmployee = listEmployee.get(listEmployee.size() -1);

    int idCreation = lastEmployee.getEmployeeId();
    int employeeID = idCreation + 1;

    System.out.println("Enter password");
    String employeePassword = kb.nextLine();

    System.out.println("Your log-in Id is: " + employeeID);

    Employee employeeHired = new Employee(nameEmployee, employeeID, 
    employeePassword);

    listEmployee.add(employeeHired);

    kb.close();

    listEmployee.toString();
}
Run Code Online (Sandbox Code Playgroud)

我知道使用 UUID,但由于EmployeeId 将用于登录,我真的不能指望有人输入完整的 UUID。

有没有一种简单的方法来创建一个随机 Id 或者我什至可以使用 UUID 的最后 4 个字符来进行登录,我该如何实现选择最后 4 个字符?

phi*_*sch 5

这取决于您需要 ID 的用途。通常,技术 ID 在系统的整个生命周期中应该是唯一的。对于数据库,这些通常是自动递增的数值。他们不是计算计数,而是存储最后使用的 id 并增加它。

对于登录等,您可能需要使用其他内容,例如用户名。这通常称为功能 ID 或业务 ID。它仍然是独一无二的,但要求不那么严格。例如,它可以重复使用。

如果您需要在高度并行的环境中创建 ID,UUID 是一个好主意。虽然它们可以在没有同步的情况下并行生成,但它们还有其他缺点,例如难以索引、长度和存储要求等。