2011-11-25 10 views
5

私は、CustomerオブジェクトとSavingsAccountを持つ単純な銀行システムのようなJavaタスクを実行しています。私はすべてのCustomerオブジェクトをarraylistに格納していますが、私はSavingsAccountオブジェクトでも同じことを計画していましたが、おそらくそれは必要ではありません。各SavingsAccountには一意のaccountNumberというデータメンバーがあります。Javaで一意の値を持つデータメンバーを持つオブジェクトを検索しますか?

SavingsAccountには、accountBalanceというデータメンバーも含まれています。だから私の質問は、 "1002"と等しいaccountNumberを持つSavingsAccountに到達する(setAccountBalanceでaccountBalanceのようなデータメンバから値を取得または設定できるようにするためです)。ヘルプはpreciateされています!ありがとう!

私はアカウントオブジェクトを作成

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の使い方を知っていますが、私はまだハッシュマップに到達しておらず、より単純な、しかしおそらく最高の解決策を望んでいましたか? arraylistやhashmapでオブジェクトを "収集"せずにオブジェクトに到達する方法はありませんか?

+3

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

その後でそれを取得します。代わりに、equals()またはequalsIgnoreCase()を使用してください。 – gprathour

+0

そうです、私の質問を編集しました –

答えて

1

ArrayList<SavingsAccount>にアカウントを保存する代わりに、HashMap<String, SavingsAccount>に保存することをおすすめします。

右のそれを作成した後にマップにアカウントを置く:あなたはその後、

accountMap.get(accountNumber); 

を行うことで、容易かつ効率的にアカウントを手に入れることができます

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

ていることを確認しますいくつかの口座番号でマッピングされた口座は、常に非常に口座番号を持っていますので、最終:

... 
private final String accountNumber; 
... 
+0

OKですが、オブジェクトはHashMapにある必要がありますか?彼らは「自由」ではなく、そのうちの1つだけを選ぶことができませんでしたか? –

+0

あなたは*見る*ために*必要なものを見つける*ことができるようにする。彼らがちょうど浮かんでいるなら、あなたは本当にどこでもそれを検索することはできません。しかし、 'HashMap'を' SavingsAccount'クラスの静的メンバとして置き、 'SavingsAccount'コンストラクタで' this'をマップに追加して、このような静的メソッドを作成することができます: 'public static getSavingsAccount(String num ){return map.get(num); } '。ファクトリパターンの使用を検討し、常にアカウントオブジェクトの 'SavingsAccount'を尋ねることをお勧めします。(これにより、同じnumで2つのアカウントオブジェクトを作成することを避けることができます)。 – aioobe

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); 
0

のように地図に配置しますが、一定時間内にSavingsAccountを得るための効果的な方法です。 ArrayListを削除し、HashMapを使用します。あなたは "==" 演算子を使用して文字列を確認することができません

SavingsAccount account = map.get(inNumber); 
関連する問題