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;
        }
  • 相关阅读:
    用jquery实现手风琴效果
    网易轻博客特点
    用display做导航
    小结
    有序列表的显示
    水仙花
    相识多少天
    关于javascript中this的运用
    BFC
    八月第三周
  • 原文地址:https://www.cnblogs.com/yangchaojie/p/9204176.html
Copyright © 2011-2022 走看看