获取唯一id';s银行程序java

获取唯一id';s银行程序java,java,class,random,Java,Class,Random,我正在创建一个银行程序和hava类账户(摘要)、储蓄账户和客户(等等)。当我创建一个新的savingsaccount时,我想获得每个帐户的id。我的问题是我不知道如何使id唯一 我还缺什么?如何为客户和帐户使用ArrayList?还有其他建议吗?这对我来说很难,但我正在努力学习和理解 在银行类中,我创建了两个客户c1和c2。然后,我为客户c1创建了两个帐户 public class Bank { public static void main(String[] args) {

我正在创建一个银行程序和hava类
账户
(摘要)、
储蓄账户
客户
(等等)。当我创建一个新的
savingsaccount
时,我想获得每个帐户的id。我的问题是我不知道如何使id唯一

我还缺什么?如何为客户和帐户使用
ArrayList
?还有其他建议吗?这对我来说很难,但我正在努力学习和理解

在银行类中,我创建了两个客户c1和c2。然后,我为客户c1创建了两个帐户

public class Bank {
    public static void main(String[] args) {

    ArrayList<Customer> customerList = new ArrayList<Customer>();  
    ArrayList<Account> accountList = new ArrayList<Account>();  

    Customer c1 = new Customer("John");
    Customer c2 = new Customer("Sam");        

    SavingsAccount a1 = new SavingsAccount(c1);
    SavingsAccount a2 = new SavingsAccount(c1);

    customerList.add(c1);
    customerList.add(c2);              

    accountList.add(a1);
    accountList.add(a2); 
    } 
}
课堂储蓄账户:

public class SavingsAccount extends Account{ 
    public SavingsAccount() {
        super();
    }

    SavingsAccount(Customer person) {
        name = person;
        id = (int) Math.floor(Math.random()*101);  //This won't generate a unique number for each savingsaccount
    }  
}

当然,数学随机给你们一个随机数,但不是唯一的。。。使用UUID.randomUUID().toString()

代码中的操作是获取范围为0到101的伪随机数。这并不能确保这些数字不会重复。确保生成唯一id的一些方法包括

  • 如果您使用的是数据库,请使用数据库生成的自动递增编号
  • 在代码中有一个静态变量,每次分配ID时都会增加该变量
  • 编写某种形式的哈希函数,根据客户对象生成整数ID
  • 用于生成唯一的ID。这还允许您随机计算它,并获取ID等的哈希值

  • 非常感谢。起初,我有一个想法,把1-100之间的数字保存在一个列表中,然后(不知何故)从列表中选择数字。我将试试你的第二条建议。使用简单的密码加密0、1、2、3。。。因为密码是可逆的,所以保证输出对于唯一的输入是唯一的。我不认为3是一个选项,甚至接受(要求)相等的ID用于相等的<代码>客户对象< /代码>:散列函数不需要是内射的,并且经常是非内射的。标准的将无限的输入映射到一组有限的值——想想生日悖论。好的,我将尝试学习UUID.randomUUID().toString()。谢谢你如果你不把你的uid存储在一个表单中(如Vaishak Suresh的发音答案#1),它不一定是一个唯一的id-这不太可能,但也不一定-但是你可以使用一个简单的文本文件而不是数据库,如果你只是为了练习而编写代码的话(在这种情况下UUID也适合你…所以别介意我的提示。。。
    public class SavingsAccount extends Account{ 
        public SavingsAccount() {
            super();
        }
    
        SavingsAccount(Customer person) {
            name = person;
            id = (int) Math.floor(Math.random()*101);  //This won't generate a unique number for each savingsaccount
        }  
    }