我正在编写需要比较值的代码,但对HashMaps来说还是比较新的,我不知道如何搜索保存的所有值。
我尝试做的是找到所有已保存值的最高值。我希望它经历直到第一个条件通过,保存该值和键,并继续直到新值通过if语句条件。
double highestNum = 0.0; // 0 set to the default lowest value; saves highest value
String highestKey = ""; // used to save the key assosciated w/ highest value
for (String high : quantity_hash.keySet()) {
if (quantity_hash.get(high) > highestNum) {
highestKey = high;
}
}
截至目前(我相信),我的代码将搜索值,直到if语句通过。然后它将保存该键和值,然后停止。有什么建议吗?
编辑:我查看过以前的问题,他们似乎只是试图找到与设定值相关联的关键字,而我试图比较所有值,并保存关联的关键字和那些。如有必要,highestNum和highestKey应多次重写。
答案 0 :(得分:1)
您需要稍加修改才能存储高值:
double highestNum = 0.0; // 0 set to the default lowest value
String highestKey = ""; // used to save the key assosciated w/ highest value
for (String key : quantityHash.keySet()) {
double value = quantityHash.get(key); // ADDED LINE
if (value > highestNum) { // MODIFIED LINE
highestKey = key;
highestNum = value; // ADDED LINE
}
}
这将遍历并查看所有值。你的代码也会循环,但你只有最高价值的密钥;你没有更新highestNum
,所以它保持在0.0。
答案 1 :(得分:1)
尝试更新highestNum
变量。将de`修改为body:
double current_value = quantity_hash.get(high);
if ( current_value > highestNum) {
highestKey = high;
highestNum = current;
}
正如AntonH评论的那样,最好使用Double.MIN_VALUE
代替0
作为起始值,以防所有值都为负值。