+ 1
Please what is the error In my code
I need the print the value of the largest key key in a hash map players https://code.sololearn.com/ca2a73A22a19/?ref=app
4 Answers
+ 3
Amal Gil
You are comparing each value with next value. On every iteration you are assigning value in max value then comparing with next value.In this way you can't get max value.
You have to consider first value as max value and compare with others.
HashMap key is string but you are using Integer to get value. Your output should be Player's name not player's value
You can try this to get name
public void getWinner(){
Iterator<String> it = players.keySet().iterator();
String name = it.next();
Integer max = players.get(name);
while(it.hasNext()) {
String name1 = it.next();
Integer val = players.get(name1);
if (val > max) {
max = val;
name = name1;
}
}
System.out.print(name);
}
Or you can use this
public void getWinner() {
String key = Collections.max(players.entrySet(), Map.Entry.comparingByValue()).getKey();
System.out.print(key);
}
+ 1
what about this one
+ 1
Amal Gil
This is also good but there is little mistake so here is correction
public void getWinner(){
int max=Collections.max(players.values());
for(java.util.Map.Entry<String,Integer> iter:players.entrySet()){
if(iter.getValue()==max)
System.out.println(iter.getKey());
}
}