【问题标题】:How to find the lowest value in a HashMap [duplicate]如何在HashMap中找到最小值[重复]
【发布时间】:2020-08-16 20:34:33
【问题描述】:

我想从HashMap 中输出最小值。到目前为止,我可以遍历HashMap 并打印出它的值,但我不确定如何比较地图本身的值并打印出最小的键和值。这就是我的迭代方式:

for (HashMap.Entry<String, Integer> entry : itemTime.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

【问题讨论】:

    标签: java hashmap


    【解决方案1】:

    在您的循环中,将该值与当前最小值进行比较并记住最小值:

    Integer smallestValue = Integer.MAX_VALUE;
    String smallestKey;
    for (HashMap.Entry<String, Integer> entry : itemTime.entrySet()) {
        if (entry.getValue() < smallestValue) {
            smallestKey = entry.getKey();
            smallestValue = entry.getValue();
        }
        System.out.println(entry.getKey() + " " + entry.getValue());
    }
    System.out.pintln("Smallest is " + smallestKey + " with " + smallestValue);
    

    【讨论】:

    • 为我工作,谢谢!
    【解决方案2】:

    我认为最简单的方法是使用Stream

    public static Map.Entry<Integer, Integer> getSmallestValue(Map<Integer, Integer> map) {
        return map.entrySet().stream().min(Comparator.comparingInt(Map.Entry::getValue)).orElse(null);
    }
    

    【讨论】:

      【解决方案3】:

      我认为你想要的是对你的哈希图进行排序。 Java 有你可以利用的库。

      您也可以将第一个键-->值设置为“最小”,然后遍历哈希图的其余部分检查 if(currentValue

      据我了解,java hashmaps 是自动按键排序的。 IE 如果你有键 --> 体重、身高、年龄……你的 hashmap 中的第一个键是“年龄”,最后一个键是“体重”

      【讨论】:

      • Hashmaps 默认不排序。键甚至可能无法提供合理的排序(请参阅 Comparable 接口)。您可以使用 LinkedHashMap 来保留插入顺序(时间),但这不是关键。
      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 2018-05-16
      相关资源
      最近更新 更多