package com.trade.common.utils;

import java.util.Map;
import java.util.TreeMap;

public class MapUtil {

    /**
     * 使用 Map按key进行排序 前缀必须一致，后缀按数字比较
     * 
     * @param map
     * @return
     */
    public static Map<String, String> sortMapByAlphaNumKey(Map<String, String> map) {
        if (map == null || map.isEmpty()) {
            return map;
        }
        Map<String, String> sortMap = new TreeMap<>((c1, c2) -> {
            if (c1 == null && c2 == null) {
                return 0;
            }
            if (c1 == null) {
                return -1;
            }
            if (c2 == null) {
                return 1;
            }
            if (c1.length() == c2.length()) {
                // 长度相等时按字符串比较
                return c1.compareTo(c2);
            } else {
                // 长度不等时，长度短的排前面
                return c1.length() - c2.length();
            }
        });
        sortMap.putAll(map);
        return sortMap;
    }
}
