【问题标题】:how to get the lowest float value from the hash map如何从哈希图中获取最低浮点值
【发布时间】:2011-10-06 21:29:46
【问题描述】:

我有一张如下图所示的地图。我想要做的是获得最小浮点值及其对应的键。浮点值也类似于例如 3127668.8 或 1.786453E7 等等。我怎样才能做到这一点?

Map<String, Float> distance = new HashMap<String, Float>();

【问题讨论】:

    标签: java map hashmap


    【解决方案1】:
    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();
        }
    }
    

    【讨论】:

    • @SHiRKiT 这是最好的,无需重新设计
    • 我只会将min的默认值改为Float.MAX_VALUE,只是因为我不知道Float.POSITIVE_INFINITY的用途和值。
    • @SHiRKiT Float.compareTo 具有大于任何可表示数字的正无穷大(检查 IEEE standard )但任何保证大于最小的数字都可以,我只是走到了极端
    • 它只打印无穷大和空值
    • @Suyesh 反转比较(&lt; 变为 &gt;)我的答案不好
    【解决方案2】:

    一行代码:

    Float min = Collections.min(distance.values());
    

    JDK 库易于维护。

    【讨论】:

      【解决方案3】:

      遍历条目并进行比较。

      或者,使用对项目条目进行比较的包装类以避免迭代,或者使用基于任意标准进行排序/排序的映射实现等。

      【讨论】:

        【解决方案4】:

        试试这个:

        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;
            }
        }
        

        【讨论】:

          【解决方案5】:

          您可以遍历映射的入口集,即 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;
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2017-02-16
            • 2013-01-09
            • 2014-02-23
            • 2010-12-19
            • 2011-11-21
            • 1970-01-01
            • 2020-11-24
            • 2015-10-17
            • 1970-01-01
            相关资源
            最近更新 更多