zoukankan      html  css  js  c++  java
  • Java | Map排序,工具类改进

    package util;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Date;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;
    
    
    /***
     *
     * @author YangChaoJie
     *
     */
    public class ReqUtil {
        /***
         * 将请求对象传入,进行对象转Map,排序,进行MD5加密;
         *
         * @param req
         * @return
         */
        private static StringBuilder stringBuilder;
    
        private static String currTime;
    
        /***
         * hashCode加密字符串
         *
         * @return
         */
        public static LinkedHashMap<String, Object> ParameToMap(Object reqData) {
            stringBuilder = new StringBuilder();
            stringBuilder.append("he3yun.com-");
            @SuppressWarnings("unchecked")
            LinkedHashMap<String, Object> map = ZJ_BeanToMapUtils.toMap(reqData);
            List<Map.Entry<String, Object>> list = new ArrayList<Map.Entry<String, Object>>(map.entrySet());
            Collections.sort(list, new Comparator<Map.Entry<String, Object>>() {
                public int compare(Entry<String, Object> o1, Entry<String, Object> o2) {
                    return String.valueOf(o1.getValue()).toLowerCase()
                            .compareTo(String.valueOf(o2.getValue()).toLowerCase());
                }
            });
            return CheckData(reqData, list);
        }
    
        /***
         * 根据不同的构造方法参数生成对应Map对象,进行加密
         *
         * @param reqData
         * @param list
         * @return
         */
        private static LinkedHashMap<String, Object> CheckData(Object reqData, List<Map.Entry<String, Object>> list) {
            LinkedHashMap<String, Object> dataMap = new LinkedHashMap<String, Object>();
    
            return traverseEntryToMap(reqData, dataMap, list);
        }
    
        /***
         * 提高复用写的方法
         *
         * @param dataMap
         * @param list
         * @return
         */
    
        private static LinkedHashMap<String, Object> traverseEntryToMap(Object reqData,
                                                                        LinkedHashMap<String, Object> dataMap, List<Map.Entry<String, Object>> list) {
            for (Entry<String, Object> mapping : list) {
                if (mapping.getValue() != null) {
                    stringBuilder.append(String.valueOf(mapping.getValue()) + "-");
                    dataMap.put(mapping.getKey(), mapping.getValue());
                }
            }
            getCurrTime();
            stringBuilder.append(currTime);
    
            dataMap.put("hashCode", MD5Util.stringToMD5(String.valueOf(stringBuilder)));
            dataMap.put("timestamp", currTime);
    
            return dataMap;
        }
    
        public static void getCurrTime() {
            currTime = String.valueOf(new Date().getTime());
        }
    
        /**
         * MAP排序
         * @param map
         */
        public static LinkedHashMap<String, Object> sortMap(LinkedHashMap<String, Object> map) {
            List<Map.Entry<String, Object>> list = new ArrayList<Map.Entry<String, Object>>(map.entrySet());
            Collections.sort(list, new Comparator<Map.Entry<String, Object>>() {
                public int compare(Entry<String, Object> o1, Entry<String, Object> o2) {
                    return String.valueOf(o1.getValue()).toLowerCase()
                            .compareTo(String.valueOf(o2.getValue()).toLowerCase());
                }
            });
            return map;
        }
    
    
    
    }

    反射对象生成没有null的map:

    public static <K, V> LinkedHashMap<K, V> toMap(Object javaBean) {
            LinkedHashMap<K, V> ret = new LinkedHashMap<K, V>();
            try {
                Method[] methods = javaBean.getClass().getDeclaredMethods();
                for (Method method : methods) {
                    if (method.getName().startsWith("get")) {
                        String field = method.getName();
                        field = field.substring(field.indexOf("get") + 3);
                        field = field.toLowerCase().charAt(0) + field.substring(1);
                        Object value = method.invoke(javaBean, (Object[]) null);
                        ret.put((K) field, (V) (null == value ? null : value));
                    }
                }
            } catch (Exception e) {
            }
            return ret;
        }
  • 相关阅读:
    【转】Eclipse插件开发之基础篇(1) 插件开发的基础知识
    js获取周.html
    Go语言 基础
    MySQL replace into
    元认知:思考“何为思考”
    redis 流水线
    关于Blog现象的一些思考。
    [LCS]LCS2005服务器应用程序
    [WAP]dotNet在WAP应用开发中实现按指定页数翻页的解决方案
    [Cache]深入学习Enterprise Library for .NET Framework 2.0的Cache机制——分析篇
  • 原文地址:https://www.cnblogs.com/yangchaojie/p/9204176.html
Copyright © 2011-2022 走看看