【发布时间】:2011-10-06 21:29:46
【问题描述】:
我有一张如下图所示的地图。我想要做的是获得最小浮点值及其对应的键。浮点值也类似于例如 3127668.8 或 1.786453E7 等等。我怎样才能做到这一点?
Map<String, Float> distance = new HashMap<String, Float>();
【问题讨论】:
我有一张如下图所示的地图。我想要做的是获得最小浮点值及其对应的键。浮点值也类似于例如 3127668.8 或 1.786453E7 等等。我怎样才能做到这一点?
Map<String, Float> distance = new HashMap<String, Float>();
【问题讨论】:
String str;
Float min =Float.valueOf(Float.POSITIVE_INFINITY );
for(Map.Entry<String,Float> e:distance.entrySet()){
if(min.compareTo(e.getValue())>0){
str=e.getKey();
min=e.getValue();
}
}
【讨论】:
Float.MAX_VALUE,只是因为我不知道Float.POSITIVE_INFINITY的用途和值。
< 变为 >)我的答案不好
一行代码:
Float min = Collections.min(distance.values());
JDK 库易于维护。
【讨论】:
遍历条目并进行比较。
或者,使用对项目条目进行比较的包装类以避免迭代,或者使用基于任意标准进行排序/排序的映射实现等。
【讨论】:
试试这个:
String minKey = null;
Float minValue = Float.MAX_VALUE;
for (Map.Entry<String, Float> entry : distance.entrySet()) {
Float value = entry.getValue();
if (value < minValue) {
minKey = entry.getKey();
minValue = value;
}
}
【讨论】:
您可以遍历映射的入口集,即 distance.entrySet(),它是 Map.Entry 对象的集合,它们基本上是一个键/值对。像这样的:
Map.Entry<String,Float> minEntry;
for(entry : distance.entrySet()) {
if(minEntry == null) {
minEntry = entry;
continue;
}
if(minEntry.getValue() > entry.getValue()) {
minEntry = entry;
}
}
【讨论】: