我有一張如下所示的映射。我想要做的是獲得最小浮點值和相應的鍵。此外,浮點值類似於例如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();
}
}
遍歷條目,做一個比較。
另外,使用包裝的類,它在項條目比較,以避免重複,或地圖的實現,它的排序/排序基於武斷的標準,等等
試試這個:
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;
}
}
一個行代碼:
Float min = Collections.min(distance.values());
這很容易通過JDK庫維護。
這是您會找到的最佳解決方案。漂亮的java代碼! – SHiRKiT
@SHiRKiT無需重新設計即可獲得最好的效果 –
我只會將min的默認值更改爲「Float.MAX_VALUE」,但僅僅是因爲我不知道「Float.POSITIVE_INFINITY」的用途和值。 – SHiRKiT