我有一张如下图所示的地图。我想要做的是获得最小浮点值及其相应的键。浮点值也是例如3127668.8或1.786453E7,依此类推。我怎样才能做到这一点?
Map<String, Float> distance = new HashMap<String, Float>();
答案 0 :(得分:8)
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();
}
}
答案 1 :(得分:4)
一行代码:
Float min = Collections.min(distance.values());
JDK库很容易维护。
答案 2 :(得分:1)
迭代条目并进行比较。
或者,使用包装类来对项目条目进行比较以避免迭代,或者使用基于任意条件进行排序/排序的地图实现等。
答案 3 :(得分:1)
试试这个:
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;
}
}
答案 4 :(得分:0)
您可以遍历地图的入口集,即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;
}
}