获取唯一ID的Bank程序java

时间:2014-09-05 19:06:02

标签: java class random

我正在创建一个银行程序和hava类Account(摘要),SavingsAccountCustomer(以及其他)。当我创建新的savingsaccount时,我希望为每个帐户获取一个ID。我的问题是我无法弄清楚如何使id唯一。

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

在Bank类中,我创建了几个客户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 abstract class Account {  
   protected int balance;
   protected int id;
   protected double interest;
   protected Customer name;

   public Account() {}

   public Account(Customer name) {
   this.name = name;
   }

   public abstract void deposit(int amount); 

   public abstract void withdraw(int amount);

   public abstract int getBalance();

   public abstract void transfer(int amount, Account account);
}

在SavingsAccount类中:

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
    }  
}

2 个答案:

答案 0 :(得分:2)

您在代码中所做的是获取0到101范围内的伪随机数。这并不能确保数字不会重复。确保唯一ID生成的一些方法是

  1. 如果您正在使用数据库,请使用数据库生成的自动增量编号
  2. 在每次分配ID
  3. 时递增的代码中都有一个静态变量
  4. 编写某种形式的哈希函数,该函数根据Customer对象生成整数ID。
  5. 使用UUID也可以生成唯一ID。这也允许您随机计算它并获取ID等的哈希值。

答案 1 :(得分:0)

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