2011-11-25 17 views
5

मैं जावा कार्य कर रहा हूं जो ग्राहक ऑब्जेक्ट्स और सेविंग्स अकाउंट के साथ एक साधारण बैंक सिस्टम की तरह है। मैं सभी ग्राहक वस्तुओं को एक सरणी सूची में संग्रहीत करता हूं और मैं बचत खाता वस्तुओं के साथ ऐसा करने की भी योजना बना रहा था, लेकिन शायद यह आवश्यक नहीं है। प्रत्येक बचत खाता में खाता संख्या नामक डेटा सदस्य होता है जो अद्वितीय है।जावा में एक अद्वितीय मूल्य के साथ डेटा सदस्य के साथ एक वस्तु खोजें?

बचत खाता में डेटा सदस्यों को खाता खाता बैलेंस भी शामिल है। तो मेरा सवाल यह है कि मैं बचत बचत तक कैसे पहुंच सकता हूं जिसमें खाता "1002" के बराबर है (कुछ कारणों से मेरे पास स्ट्रिंग्स हैं) और फिर खाता सदस्य से मूल्य निर्धारित करने या प्राप्त करने में सक्षम हो, जैसे खाता अकाउंट बैलेंस के साथ खाता? मदद की जाती है! धन्यवाद!

मैं खाते वस्तु बनाने

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

} 

संपादित करें:

जब से मैं जावा सीख रहा हूँ, मैं एक समाधान है कि करने के लिए जटिल नहीं है पसंद करते हैं अभी उपयोग करें। मुझे पता है कि सरणीसूची का उपयोग कैसे करें, लेकिन मैं अभी तक हैशैप तक नहीं पहुंच पाया है, और अब एक सरल, लेकिन शायद सबसे अच्छा नहीं, समाधान के लिए उम्मीद कर रहा था? क्या सरणी सूची या हैशपैप में उन्हें "एकत्रित" किए बिना वस्तुओं तक पहुंचने का कोई तरीका नहीं है?

+3

आप "==" ऑपरेटर के साथ स्ट्रिंग की जाँच नहीं कर सकते। इसके बजाए बराबर() या बराबर इग्नोरकेस() का उपयोग करें। – gprathour

+0

यह सही है, मैंने अपना प्रश्न –

उत्तर

1

ArrayList<SavingsAccount> में खातों को संग्रहीत करने के बजाय मेरा सुझाव है कि आप उन्हें HashMap<String, SavingsAccount> में स्टोर करें।

सही इसे बनाने के बाद नक्शे में खाता डालें:

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

फिर आप

accountMap.get(accountNumber); 

करके आसानी से और कुशलता से एक खाता की पकड़ प्राप्त कर सकते हैं सुनिश्चित करें कि एक बनाने के लिए कुछ खाता संख्या से मैप किए गए खाते में हमेशा वास्तव में बहुत खाता संख्या होती है, मेरा सुझाव है कि आप accountNumber अंतिम बनाएं:

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

ठीक संपादित किया है, लेकिन क्या वस्तुओं को हैश मैप में होना चाहिए? क्या वे "मुक्त" नहीं हो सकते थे और बस उनमें से एक का चयन कर सकते हैं? –

+0

* ढूंढने में सक्षम होने के लिए * आपको इसके लिए * देखो * की आवश्यकता है। अगर वे बस चारों ओर तैर रहे हैं, तो आप वास्तव में कहीं भी इसकी खोज नहीं कर सकते हैं। हालांकि आप 'बचत खाता' वर्ग के स्थिर सदस्य के रूप में 'हैश मैप' डाल सकते हैं और 'बचत' को 'बचत खाता' कन्स्ट्रक्टर में मानचित्र में जोड़ सकते हैं, और इस तरह एक स्थिर विधि बना सकते हैं: 'सार्वजनिक स्थैतिक getSavingsAccount (स्ट्रिंग num) {वापसी map.get (num); } '। मेरा सुझाव है कि आप कारखाने के पैटर्न का उपयोग करने पर विचार करें और हमेशा खाता ऑब्जेक्ट के लिए 'बचत खाता' से पूछें।(यह आपको एक ही संख्या के साथ दो खाता वस्तुओं को बनाने से बचने की अनुमति देगा।) – 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<String, SavingsAccount> map = new HashMap<String, SavingsAccount>(); 
SavingsAccount account = new SavingsAccount(inNumber); 
map.put(inNumber, account); 

फिर से इसे पुनः प्राप्त:

SavingsAccount account = map.get(inNumber); 
संबंधित मुद्दे