什么是实现 ID 的好方法?
What is a good way of implementing a ID?
我正在为自己构建一个小项目,每次创建 Employee
时都会为它们提供一个 ID。
此 Id 是通过查找 ArrayList.
的 .size() 生成的
//Creating the Employee Id
int employeeID = listEmployee.size() +1;
我知道这是个坏主意,因为在删除员工时,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();
}
我知道如何使用 UUID,但由于 Employee
ID 将用于登录,我真的不能指望有人输入完整的 UUID。
是否有创建随机 ID 的简单方法,甚至可以使用 UUID 的最后 4 个字符仅用于登录,我如何实现选择最后 4 个字符?
这取决于您需要 ID 的用途。通常,技术 ID 在系统的整个生命周期中应该是唯一的。对于数据库,这些通常是自动递增的数值。他们不计算计数,而是存储最后使用的 id 并递增它。
对于登录等,您可能需要使用其他内容,例如用户名。这通常称为功能 ID 或业务 ID。它仍然是独一无二的,但要求不那么严格。例如,它可以重复使用。
如果您需要在高度并行的环境中创建 ID,UUID 是个好主意。虽然它们可以在不同步的情况下并行生成,但它们还有其他缺点,例如难以索引、长度和存储要求等。
通常 ID 是一个不可见的参数。简单的方法,如果你使用基于日期时间的 id。示例:
long id = System.currentTimeMillis();
为每个员工创建随机 Id 的最佳方法是使用 UUID。
class 表示不可变的通用唯一标识符 (UUID)。 UUID 代表一个 128 位的值。这些全局标识符存在不同的变体。此 class 的方法用于操纵 Leach-Salz 变体,尽管构造函数允许创建 UUID 的任何变体(如下所述)。
UUID 有四种不同的基本类型:基于时间、DCE 安全、基于名称和随机生成的 UUID。这些类型的版本值分别为 1、2、3 和 4。
用于在 Web 应用程序中创建会话 ID。它还用于创建交易 ID。
它扩展了对象 class。
它实现了 Serializable 和 Comparable 接口。
现在让我们开始实施:-
使用java.util.UUID包
UUID uniqId = UUID.randomUUID();
每次您使用它时,您都会为您的员工获得一个随机 ID。
我正在为自己构建一个小项目,每次创建 Employee
时都会为它们提供一个 ID。
此 Id 是通过查找 ArrayList.
的 .size() 生成的//Creating the Employee Id
int employeeID = listEmployee.size() +1;
我知道这是个坏主意,因为在删除员工时,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();
}
我知道如何使用 UUID,但由于 Employee
ID 将用于登录,我真的不能指望有人输入完整的 UUID。
是否有创建随机 ID 的简单方法,甚至可以使用 UUID 的最后 4 个字符仅用于登录,我如何实现选择最后 4 个字符?
这取决于您需要 ID 的用途。通常,技术 ID 在系统的整个生命周期中应该是唯一的。对于数据库,这些通常是自动递增的数值。他们不计算计数,而是存储最后使用的 id 并递增它。
对于登录等,您可能需要使用其他内容,例如用户名。这通常称为功能 ID 或业务 ID。它仍然是独一无二的,但要求不那么严格。例如,它可以重复使用。
如果您需要在高度并行的环境中创建 ID,UUID 是个好主意。虽然它们可以在不同步的情况下并行生成,但它们还有其他缺点,例如难以索引、长度和存储要求等。
通常 ID 是一个不可见的参数。简单的方法,如果你使用基于日期时间的 id。示例:
long id = System.currentTimeMillis();
为每个员工创建随机 Id 的最佳方法是使用 UUID。
class 表示不可变的通用唯一标识符 (UUID)。 UUID 代表一个 128 位的值。这些全局标识符存在不同的变体。此 class 的方法用于操纵 Leach-Salz 变体,尽管构造函数允许创建 UUID 的任何变体(如下所述)。 UUID 有四种不同的基本类型:基于时间、DCE 安全、基于名称和随机生成的 UUID。这些类型的版本值分别为 1、2、3 和 4。
用于在 Web 应用程序中创建会话 ID。它还用于创建交易 ID。 它扩展了对象 class。 它实现了 Serializable 和 Comparable 接口。
现在让我们开始实施:-
使用java.util.UUID包
UUID uniqId = UUID.randomUUID();
每次您使用它时,您都会为您的员工获得一个随机 ID。