求大牛写个类或方法,。java 中List<Map<String,String>> 变量处理。解决后送分,私信,给冲qq会员。

求大牛写个类或方法,。java 中List<Map<String,String>> 变量处理。解决后送分,私信,给冲qq会员。
现在有List变量,长度n,里面的元素为Map<String,String>类型
M1[<id,1>,<b,b1>,<c,c1>,<d,d1>,<>.....] ,
M2[<id,2>,<b,b2>,<c,c2>,<d,d2>,<>.....] ,
M3[<id,1>,<b,b3>,<c,c3>,<d,d3>,<>.....],
M4[<id,4>,<b,b4>,<c,c4>,<d,d4>,<>.....],......Mn
通过一个类或方法,输入List,输出 新的newlist,里面的元素为
M1[<id,1>,<b,b1+b3>,<c,c1+c3>,<d,d1+d3>,<>.....] ,
M2[<id,2>,<b,b2>,<c,c2>,<d,d2>,<>.....] ,
M4[<id,4>,<b,b4>,<c,c4>,<d,d4>,<>.....],......Mn
根据id的value值相同的,合并。

按你题目的要求是实现了,不过灵活性很差,不知道你怎么会有这样的业务.....

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Test {

    private static String[] KEYS = { "b", "c", "d" };

    public static void main(String args[]) {

        List<Map<String, String>> data = new ArrayList<Map<String, String>>();

        initData(data);

        System.out.println("==========处理前==========");
        show(data);

        List<Map<String, String>> result = deal(data);

        System.out.println("==========处理后==========");
        show(result);
    }

    private static List<Map<String, String>> deal(List<Map<String, String>> data) {

        List<Map<String, String>> result = new ArrayList<Map<String, String>>();

        while (data.size() > 0) {
            Map<String, String> map = data.get(0);
            String value = map.get("id");

            for (int i = 1; i < data.size(); i++) {

                Map<String, String> other = data.get(i);
                String otherValue = other.get("id");

                if (!value.equals(otherValue)) {
                    continue;
                }

                for (String key : KEYS) {
                    map.put(key, map.get(key) + "+" + other.get(key));
                }

                data.remove(other);
                i--;
            }
            result.add(map);
            data.remove(map);
        }
        return result;
    }

    private static void initData(List<Map<String, String>> data) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("id", "1");
        map.put("b", "b1");
        map.put("c", "c1");
        map.put("d", "d1");
        data.add(map);

        map = new HashMap<String, String>();
        map.put("id", "2");
        map.put("b", "b2");
        map.put("c", "c2");
        map.put("d", "d2");
        data.add(map);

        map = new HashMap<String, String>();
        map.put("id", "1");
        map.put("b", "b3");
        map.put("c", "c3");
        map.put("d", "d3");
        data.add(map);

        map = new HashMap<String, String>();
        map.put("id", "4");
        map.put("b", "b4");
        map.put("c", "c4");
        map.put("d", "d4");
        data.add(map);
    }

    private static void show(List data) {
        for (Object obj : data) {
            System.out.println(obj);
        }
    }
}

==========处理前==========
{id=1, d=d1, b=b1, c=c1}
{id=2, d=d2, b=b2, c=c2}
{id=1, d=d3, b=b3, c=c3}
{id=4, d=d4, b=b4, c=c4}
==========处理后==========
{id=1, d=d1+d3, b=b1+b3, c=c1+c3}
{id=2, d=d2, b=b2, c=c2}
{id=4, d=d4, b=b4, c=c4}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-30
//各Map内,相同的KEY的字符合并

List<Map<String, String>> mergeList(List<Map<String, String>> list){
List<Map<String, String>> listNew=new ArrayList<Map<String, String>>();
//................

return listNew;

}

是这样定义吗。
相似回答