2013-01-04 18 views
16

पर प्रत्येक लूप के लिए मैंने लिखा एक मूल चैट प्रोग्राम में कई महत्वपूर्ण शब्द हैं जो विशेष क्रियाएं, छवियां, संदेश इत्यादि उत्पन्न करते हैं। मैं हैश मैप में सभी महत्वपूर्ण शब्दों और विशेष कार्यों को संग्रहीत करता हूं। मुख्य शब्द कुंजी हैं और फ़ंक्शन मान हैं। मैं कुछ प्रकार के लूप के साथ चाबियों में उपयोगकर्ता इनपुट की तुलना करना चाहता हूं। मैंने सब कुछ करने की कोशिश की है जिसे मैं सोच सकता हूं और कुछ भी काम नहीं करता है। यही वह है जो मैं समझ सकता हूं:जावा हैशैप

myHashMap = <File Input> 
for(String currentKey : <List of HashMap Keys>){ 
    if(user.getInput().equalsIgnoreCase(currentKey)){ 
     //Do related Value action 
    } 
} 
... 

मैं किसी भी मदद की सराहना करता हूं। अगर मैं एक समान प्रश्न को अनदेखा करता हूं या उत्तर स्पष्ट है तो मुझे माफ़ कर दो।

+0

ऊपर आप एक HashMap में एक समारोह कैसे भंडारण कर रहे हैं, तो? क्या आपका मतलब श्रोता है? –

+0

यदि आप यही पूछ रहे हैं तो आप 'myHashMap.keySet()' के साथ कुंजी की एक सूची प्राप्त कर सकते हैं। – ApproachingDarknessFish

उत्तर

22

ठीक है, आप लिख सकते हैं:

for(String currentKey : myHashMap.keySet()){ 

लेकिन यह वास्तव में सबसे अच्छा तरीका है एक हैश-मानचित्र का उपयोग करने के लिए नहीं है। (null यदि उपयोगकर्ता के इनपुट मानचित्र में प्रकट नहीं होता या)

theFunction = myHashMap.get(user.getInput().toLowerCase()); 

समारोह को पुनः प्राप्त करने:

एक बेहतर दृष्टिकोण सभी लोअरकेस कुंजी के साथ myHashMap पॉप्युलेट करने के लिए, और फिर लिखना है।

+0

मैं इस जवाब पर वापस आ रहा हूं। धन्यवाद! – Chef1075

0

यहाँ एक बेहतर पैटर्न हो सकता है:

Value val = hashMap.get(user.getInput()); 
if (val != null) { 
    doVal(); 
} 
else { 
    // handle normal, non-keyword/specfial function 
} 

जो तथ्य यह है कि HashMap रिटर्न null यदि कुंजी मानचित्र में निहित नहीं है का लाभ लेता है।

54

तुम दोनों कुंजी और मान के लिए उपयोग की जरूरत है तो इस लिए सबसे कारगर तरीका

for(Entry<String, String> e : m.entrySet()) { 
     String key = e.getKey(); 
     String value = e.getValue(); 
    } 
+1

यह वही है जो मैं ढूंढ रहा था! –

+0

यदि आप 'एंट्री' तक अपरिवर्तनीय पहुंच चाहते हैं, तो 'e'' अंतिम 'बनाएं। – phoenix

4

केवल जावा 8 & में

map.forEach((k,v)->System.out.println("Key: " + k + "Value: " + v));