For each loop on Java HashMap
Solution 1
Well, you can write:
for(String currentKey : myHashMap.keySet()){
but this isn't really the best way to use a hash-map.
A better approach is to populate myHashMap
with all-lowercase keys, and then write:
theFunction = myHashMap.get(user.getInput().toLowerCase());
to retrieve the function (or null
if the user-input does not appear in the map).
Solution 2
If you need access to both key and value then this is the most efficient way
for(Entry<String, String> e : m.entrySet()) {
String key = e.getKey();
String value = e.getValue();
}
Solution 3
Only in Java 8 & above
map.forEach((k,v)->System.out.println("Key: " + k + "Value: " + v));
Solution 4
A better pattern here might be:
Value val = hashMap.get(user.getInput());
if (val != null) {
doVal();
}
else {
// handle normal, non-keyword/specfial function
}
which takes advantage of the fact that HashMap returns null
if the key isn't contained in the Map.
Taxes45
Updated on July 05, 2022Comments
-
Taxes45 almost 2 years
A basic chat program I wrote has several key words that generate special actions, images, messages, etc. I store all of the key words and special functions in a HashMap. Key words are the keys and functions are the values. I want to compare user input to the keys with some type of loop. I have tried everything I can think of and nothing works. This is what I can figure out:
myHashMap = <File Input> for(String currentKey : <List of HashMap Keys>){ if(user.getInput().equalsIgnoreCase(currentKey)){ //Do related Value action } } ...
I would appreciate any help. Forgive me if I overlooked a similar question or if the answer is obvious.
-
Josh Lowe about 10 yearsThis is exactly what I was looking for!
-
phoenix over 6 yearsIf you want immutable access to the
Entry
, makee
final
. -
Chef1075 over 6 yearsI keep coming back to this answer. Thanks!