2013-01-04 26 views
16

Yazdığım basit bir sohbet programında özel eylemler, görüntüler, mesajlar vb. Oluşturan birkaç anahtar kelime vardır. Tüm anahtar sözcükleri ve özel işlevleri bir HashMap'te saklıyorum. Anahtar kelimeler anahtarlardır ve fonksiyonlar değerlerdir. Kullanıcı girişini bir tür döngü ile tuşlarla karşılaştırmak istiyorum. Düşünebildiğim herşeyi denedim ve hiçbir şey işe yaramıyor. Bu benim anlayabildiğim şey:Java HashMap üzerindeki her döngü için

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

Herhangi bir yardım için minnettar olurum. Benzer bir soruyu gözden kaçırırsam veya cevabın açık olup olmadığını beni affet.

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

ama bu gerçekten bir karma-haritayı kullanmak için en iyi yol değildir:

+0

yukarıda

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

+0

İstediğiniz şey buysa, myHashMap.keySet() 'ile bir tuş listesi alabilirsiniz. – ApproachingDarknessFish

cevap

22

Eh, yazabilir.

Daha iyi bir yaklaşım tamamen küçük harf tuşları ile myHashMap doldurmak ve ardından yazmaktır:

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

fonksiyonunu almak için (veya null kullanıcı girişi haritası görünmüyorsa).

+0

Bu cevaba geri dönmeye devam ediyorum. Teşekkürler! – Chef1075

0

burada Daha iyi bir durum olabilir:

anahtar Harita içerdiği değilse HashMap null döndürür aslında yararlanır
Value val = hashMap.get(user.getInput()); 
if (val != null) { 
    doVal(); 
} 
else { 
    // handle normal, non-keyword/specfial function 
} 

.

54

anahtar ve değer hem erişmesi gereken zaman bu

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

Bu tam olarak aradığım şey! –

+0

Eğer 'Entry''e değişmez erişim istiyorsanız,' e '' final' yapın. – phoenix

4

Sadece Java 8 & yılında

Nasıl bir HashMap bir işlev depoluyoruz en etkili yolu ise? Bir dinleyici mi demek istiyorsun?