Java将Hashmap按照value的值进行排序

                      Java将Hashmap按照value的值进行排序

 

我们会将普通的数组用Arrays.sort()方法进行排序。而我们对其他类型进行排序的时候,我们需要重载比较器,对接口进行重写其中的compare函数。我们可以使用匿名类来进行填写。

1、value 类型为Int

List<Map.Entry<String,Integer>> list=new ArrayList<>();
list.addAll(map.entrySet());  
Collections.sort(list,new Comparator<Map.Entry<String, Integer>>() {

   @Override
   public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
        return o2.getValue()-o1.getValue();
   }

});

2、value 类型为Double

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public class Test {
  
  public static void main(String[] args) {    
    Map<String, Double> map_Data = new HashMap<String, Double>();
    map_Data.put("A", 0.98);
    map_Data.put("B", 0.50);
    map_Data.put("C", 0.76);
    map_Data.put("D", 0.23);
    map_Data.put("E", 0.85);
    System.out.println(map_Data);
    List<Map.Entry<String, Double>> list_Data = new ArrayList<Map.Entry<String, Double>>(map_Data.entrySet());
    System.out.println(list_Data);
    Collections.sort(list_Data, new Comparator<Map.Entry<String, Double>>() {  
      public int compare(Map.Entry<String, Double> o1, Map.Entry<String, Double> o2)
      {
        if ((o2.getValue() - o1.getValue())>0)
          return 1;
        else if((o2.getValue() - o1.getValue())==0)
          return 0;
        else 
          return -1;
      }
    });

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页