Javaで一意の値を持つデータメンバーを持つオブジェクトを探しますか?

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

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でオブジェクトを "収集"せずにオブジェクトに到達する方法はありませんか?

5
そうです、私の質問を編集しました
追加された 著者 3D-kreativ,
"=="演算子で文字列をチェックすることはできません。代わりに、equals()またはequalsIgnoreCase()を使用してください。
追加された 著者 gprathour,

3 答え

Instead of storing the accounts in an ArrayList I suggest you store them in a HashMap.

それを作成した直後にアカウントを地図に入れてください:

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

そうすることで、簡単かつ効率的にアカウントを取得することができます

accountMap.get(accountNumber);

一部の口座番号で割り当てられた口座には常に非常に口座番号が付いていることを確認するため、 accountNumber を最後にすることをおすすめします。

...
private final String accountNumber;
...
1
追加された
オブジェクトはHashMap内にある必要がありますか?彼らは「自由」ではなく、そのうちの1つだけを選ぶことができませんでしたか?
追加された 著者 3D-kreativ,
見た目に必要なものを見つけすることができるようにする。彼らがちょうど浮かんでいるなら、あなたは本当にどこでもそれを検索することはできません。しかし、 HashMap SavingsAccount クラスの静的メンバーにして this SavingsAccount コンストラクタを作成し、次のような静的メソッドを作成します。 } ファクトリパターンの使用を検討し、常に SavingsAccount にアカウントオブジェクトを尋ねることをお勧めします。 (これにより、同じnumで2つのアカウントオブジェクトを作成することを避けることができます)。
追加された 著者 aioobe,

口座番号でハッシングすることは、一定の時間内にSavingsAccountを取得する効果的な方法です。 ArrayListを削除し、HashMapを使用します。

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

それから、それを検索する:

SavingsAccount account = map.get(inNumber);
0
追加された

私はそれらのようなマップに配置します

final Map accounts = new LinkedHashMap();

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

// add an account
accounts.put(accountKey, account);
0
追加された