如何从最大到最小打印HashMap元素

Lee*_*aan 0 java hashmap

我有这样的数据集:

water, 5
eggs, 3
juice, 7
bread, 4 
Run Code Online (Sandbox Code Playgroud)

我保存所有这些

HashMap<String, Integer> dataSet = new LinkedHashMap<String,Integer>();
Run Code Online (Sandbox Code Playgroud)

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

juice, 7
water, 5
bread, 4
eggs, 3
Run Code Online (Sandbox Code Playgroud)

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

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

}
Run Code Online (Sandbox Code Playgroud)

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

Ous*_* D. 5

这是按价值排序的一种方式.

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

结果:

juice,7
water,5
bread,4
eggs,3
Run Code Online (Sandbox Code Playgroud)

  • 这个答案绝对比我的好.你应该使用它. (2认同)