【问题标题】:How to print HashMap elements from max to min如何打印从最大值到最小值的 HashMap 元素
【发布时间】:2017-10-10 21:31:46
【问题描述】:

我有一个这样的数据集:

water, 5
eggs, 3
juice, 7
bread, 4 

我把所有这些都保存在

HashMap<String, Integer> dataSet = new LinkedHashMap<String,Integer>();

现在我想创建一个函数来打印从最大整数到最小值的元素:

juice, 7
water, 5
bread, 4
eggs, 3

我认为最简单的方法是创建 HashMap 数据集的副本,然后我必须运行 HashMapCopy,找到最大值,打印最大元素并将其从列表中删除。

private static void printMaxToMin(){
    dataSetCopy = new LinkedHashMap<String,Integer>(dataSet);

}

如何运行所有列表,找到最大值,每次打印具有最大值的元素对然后删除它?

【问题讨论】:

标签: java hashmap


【解决方案1】:

您不能使地图按值自动排序(除非您创建自定义地图类型)。每次您需要打印地图时,我都会推荐sorting the map by its values

【讨论】:

    【解决方案2】:

    这是一种按值排序的方法。

    dataSet.entrySet().stream()
              .sorted(Map.Entry.<String, Integer>comparingByValue().reversed())
              .forEach(x -> {
                   System.out.println(x.getKey() + ","+ x.getValue());
              });
    

    结果:

    juice,7
    water,5
    bread,4
    eggs,3
    

    【讨论】:

    • 这个答案肯定比我的好。你应该使用它。
    【解决方案3】:

    是的,那肯定行得通。更好的方法是将所有元素添加到列表中,然后对其进行排序。

    为此,请创建一个包含实现 Comparable 的 String 和 Integer 的包装类。例如,使用 Integer 比较,如果它们相等,则进行 String 比较。

    【讨论】:

      猜你喜欢
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 2021-10-10
      • 2019-05-26
      • 2014-12-27
      • 2021-06-05
      • 2018-07-08
      相关资源
      最近更新 更多