HashMap排序问题

Stella981
• 阅读 356
package com.icos.utility.listsort;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

/**
 * @给出一个集合,排一个叙出来
 * 
 * */
public class CustomSort {
    /**
     * @Function 降序排
     * 
     * */
    public static TreeMap<String, Float> sortFloatDESC(HashMap<String, Float> map) {
        ValueComparatorDesc valComp = new ValueComparatorDesc(map);
        TreeMap<String, Float> sortedMap = new TreeMap<String, Float>(valComp);
        sortedMap.putAll(map);
        return sortedMap;
    }
    
    /**
     * @Function 升序排
     * 
     * */
    public static TreeMap<String, Float> sortFloatASC(HashMap<String, Float> map) {
        ValueComparatorAsc valComp = new ValueComparatorAsc(map);
        TreeMap<String, Float> sortedMap = new TreeMap<String, Float>(valComp);
        
        sortedMap.putAll(map);
        
        return sortedMap;
    }
    
    public static void main(String[] args){
        HashMap<String, Float> map = new HashMap<String,Float>();
        map.put("A", (float) 0.9999);
        map.put("B", (float) 0.111);
        map.put("C", (float) 1.9090);
        map.put("D", (float) 0.2);
        
        CustomSort sf = new CustomSort();
        System.out.println(sf.sortFloatDESC(map));
    }
    
    
    /** 获取一个连续数组,最大的那个数组 
     * @return */
    public static Integer[] getMaxCNumber(Integer[] array){
        ArrayList<Integer> maxArrays = new ArrayList<Integer>();
        ArrayList<Integer> nowArrays = new ArrayList<Integer>();
        // {0, 1, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};
        int max = array[0] - 1;
        for (int i = 0; i < array.length; i++) {
//            System.out.println("array[i]: "+array[i] + " ; max+1: "+(max+1));
            if (array[i] != max + 1) {
                max = array[i] - 1;
//                System.out.println("--------------------------------,max="+(array[i] - 1) + " ;array[i]="+array[i]);
                nowArrays.clear();
            }

            nowArrays.add(array[i]);
            max = array[i];

            if (nowArrays.size() >= maxArrays.size()) {
                // maxArrays=nowArrays;这种情况是吧nowdays的地址赋值给了maxarrays的地址,这样以后只要nowarrays的地址改变,maxarrays的值也会改变
                maxArrays = (ArrayList<Integer>) nowArrays.clone();
//                System.out.println("nowArrays: "+nowArrays.toString());
//                System.out.println("maxArrays: "+maxArrays.toString());
            }
        }

        return (Integer[]) maxArrays.toArray(new Integer[] {});
    }
}

/**
 * @Function 降序排,从大到小
 * 
 * */
class ValueComparatorDesc implements Comparator<String> {

    Map<String, Float> mapFloat;

    // 这里需要将要比较的map集合传进来
    public ValueComparatorDesc(Map<String, Float> mapFloat) {
        this.mapFloat = mapFloat;
    }

    public int compare(String a, String b) {
        if (mapFloat.get(a) >= mapFloat.get(b)) {
            return -1;
        } else {
            return 1;
        }
    }
}

/**
 * @Function 升序排,从小到大
 * 
 * */
class ValueComparatorAsc implements Comparator<String> {

    Map<String, Float> mapFloat;

    // 这里需要将要比较的map集合传进来
    public ValueComparatorAsc(Map<String, Float> mapFloat) {
        this.mapFloat = mapFloat;
    }

    public int compare(String a, String b) {
        if (mapFloat.get(a) <= mapFloat.get(b)) {
            return -1;
        } else {
            return 1;
        }
    }
}
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
2年前
java spark list 转为 RDD 转为 dataset 写入表中
packagecom.example.demo;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.HashMap;importjava.util.List;importjava.util.Map;
Wesley13 Wesley13
2年前
java优化策略:hashMap内存初始化加载优化
 java优化策略:hashMap内存初始化加载优化packagecom.gsafety.opinion.pc.util;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjavax.a
Stella981 Stella981
2年前
FastJSON
 示例:importjava.util.ArrayList;importjava.util.List;importjava.util.HashMap;importjava.util.Map;importcom.alibaba.fastjson.JSON;importcom.a
Stella981 Stella981
2年前
Spring Boot AOP事务管理
代码实现importjava.util.Collections;importjava.util.HashMap;importjava.util.Map;importorg.aspectj.lang.annotation.Aspect;importorg.springframework.a
Wesley13 Wesley13
2年前
JAVA数组去重常用方法
packagecom.zxj.test;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.HashMap;importjava.util.List;importjava.util.Map;
Stella981 Stella981
2年前
LinkedHashMap和HashMap的比较使用
importjava.util.HashMap;importjava.util.Iterator;importjava.util.LinkedHashMap;importjava.util.Map;publicclassTestLinkedHashMap{publics
Wesley13 Wesley13
2年前
Java 实现简单的SQL动态组装工具类
第一版packagecom.zh.oukele.util;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;publicclassCreateSqlUtil{
Stella981 Stella981
2年前
Solr Schema Java Api 字段定义等相关操作
importjava.io.IOException;importjava.nio.file.Paths;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.u
Stella981 Stella981
2年前
Map 属性以JSON 形式存于数据库
importjava.util.HashMap;importjava.util.Map;importjavax.persistence.Id;importjavax.persistence.MappedSuperclass;importjavax.persistence.Transient;
Wesley13 Wesley13
2年前
Java连接redis操作
packagecom.lml.redis;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util.Map.Entry;importjava.util.Set