码迷,mamicode.com
首页 > 其他好文 > 详细

开发:随笔记录之 判断list和map相等,并合并等问题

时间:2015-07-17 18:46:17      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

/**
     * 根据特定规格,判断两个Map是否相等
     */
    private static boolean isEquals(Map<String, String> src, Map<String, String> dest, String[] samekey) {
        boolean equals = true;
        StringBuffer sbf_src = new StringBuffer();
        StringBuffer sbf_dest = new StringBuffer();
        for (int i = 0; i < samekey.length; i++) {
            sbf_src.append(src.get(samekey[i]));
            sbf_dest.append(dest.get(samekey[i]));
        }
        if (sbf_src.toString().equals(sbf_dest.toString())) {
            equals = true;
        else {
            equals = false;
        }
        return equals;
    }
 
    /**
     * 获得list中有没有相同的keyMap(待需找的map)<br>
     * 如果找到则返回这个list和keyMap相同Map的下标,否则返回-1
     */
    private static int getEqualsMap(List<Map<String, String>> list, Map<String, String> keyMap, String[] samekey) {
        int equalsIndex = -1;
        for (int i = 0; i < list.size(); i++) {
            Map<String, String> tempMap = list.get(i);
            if (isEquals(tempMap, keyMap, samekey)) {
                equalsIndex = i;
            }
        }
        return equalsIndex;
    }
 
    /**
     * 合并List中相同的Map
     *
     * @param list
     * @return
     */
    public static List<Map<String, String>> combineList(List<Map<String, String>> list, String[] samekey,String combinekey) {
        List<Map<String, String>> retList = new ArrayList<Map<String, String>>();
        for (int i = 0; i < list.size(); i++) {
            Map<String, String> tempMap = list.get(i);
            int equalsIndex = getEqualsMap(retList, tempMap, samekey);
            if (-1 == equalsIndex) {
                retList.add(tempMap);
            else {
                String custSrc = retList.get(equalsIndex).get(combinekey);
                int custSrcInt = Integer.parseInt(custSrc.substring(0, custSrc.length() - 1));
                String custTemp = tempMap.get(combinekey);
                int custTempInt = Integer.parseInt(custTemp.substring(0, custTemp.length() - 1));
                String destCust = (custSrcInt + custTempInt) + custSrc.substring(custSrc.length() - 1);
                retList.get(equalsIndex).put(combinekey, destCust);
            }
        }
 
        return retList;
    }

版权声明:本文为博主原创文章,未经博主允许不得转载。

开发:随笔记录之 判断list和map相等,并合并等问题

标签:

原文地址:http://blog.csdn.net/moneyshi/article/details/41081313

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!