在Java中查找具有唯一值的数据成员的对象?

时间:2011-11-25 10:12:38

标签: java

我正在做一个Java任务,就像一个带有Customer对象和SavingsAccount的简单银行系统。我将所有Customer对象存储在一个arraylist中,我还计划对SavingsAccount对象执行相同的操作,但这可能不是必需的。每个SavingsAccount都有一个名为accountNumber的数据成员,它是唯一的。

SavingsAccount还包括数据成员lika accountBalance。所以我的问题是如何到达accountsumber等于“1002”的SavingsAccount(由于某种原因我将它们作为字符串)然后能够设置或获取数据成员的值,例如accountBalance with setAccountBalance?帮助是精确的!谢谢!

我创建了帐户对象

SavingsAccount account = new SavingsAccount(inAccount);

类SavingsAccount:

class SavingsAccount {

// data members
private String accountType;
private String accountNumber;
private double accountInterestRate;
private int accountBalance;

// constructor
public SavingsAccount(String inNumber){
    accountType = "Saving";
    accountNumber = inNumber;
    accountInterestRate = 0.5;
    accountBalance = 0;
}

// get account number
public String getAccountNumber() {
    return accountNumber;
}

// get account balance
public int getAccountBalance() {
    return accountBalance;
}

// get interest rate
public double getAccountInterestRate(){
    return accountInterestRate;
}

    // set new value to balance
    public void setAccountBalance(int inMoney){
    accountBalance = accountBalance + inMoney;
    }

}

编辑:

由于我正在学习Java,我更喜欢现在使用的解决方案。我知道如何使用arraylist,但我还没有达到hashmap,并且希望现在有一个更简单,但也许不是最好的解决方案?是不是有办法在没有在arraylist或hashmap中“收集”它们的情况下到达对象?

3 个答案:

答案 0 :(得分:1)

我建议您将帐户存储在ArrayList<SavingsAccount>中,而不是将帐户存储在HashMap<String, SavingsAccount>中。

创建帐户后立即将帐户置于地图中:

SavingsAccount account = new SavingsAccount(inAccount);
accountMap.put(inAccount, account);

然后,您可以通过

轻松有效地获取帐户
accountMap.get(accountNumber);

为了确保某个帐号映射到的帐户确实拥有该帐号,我建议您accountNumber最终确定:

...
private final String accountNumber;
...

答案 1 :(得分:0)

我会把它们放在像

这样的地图中
final Map<String, SavingsAccount> accounts = new LinkedHashMap<String, SavingsAccount>();

// get an account.
SavingsAccount account = accounts.get(accountKey);

// add an account
accounts.put(accountKey, account);

答案 2 :(得分:0)

按帐号进行哈希是一种在恒定时间内获得SavingsAccount的有效方法。删除ArrayList并使用HashMap;

HashMap<String, SavingsAccount> map = new HashMap<String, SavingsAccount>();
SavingsAccount account = new SavingsAccount(inNumber);
map.put(inNumber, account);

然后用:

检索它
SavingsAccount account = map.get(inNumber);