List,map

1.List<Map<String,String>>的遍历(转): 

    Map<String,String> map = new HashMap<String, String>(); 

    map.put("1""fds"); 

    map.put("2""valu");  

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

    list.add(map); 

    for (Map<String, String> m : list){ 

      for (String k : m.keySet()){ 

        System.out.println(k + " : " + m.get(k)); 

      } 

     }

 2.两个List<Map<String,String>>相互比较,有相同数据时某些字段相加减

 inOrderList与outOrderList放自己的所比较的数据,name,number,id为map的key值(转)

    for (int i = 0; i < inOrderList.size(); i++) {//循环获取入库数据

        String number1 = String.valueOf(inOrderList.get(i).get("number"));

            String depotName1 = inOrderList.get(i).get("name");

            String proId1 = inOrderList.get(i).get("id");

            for (int j = 0; j < outOrderList.size(); j++) {//循环获取出库数据

                 String number2 = String.valueOf(outOrderList.get(j).get("number"));

                 String depotName2 = outOrderList.get(j).get("name");

                 String proId2 = outOrderList.get(j).get("id");

                if (depotName1.equals(depotName2) && proId1.equals(proId2)) {

                    Integer sum =Integer.parseInt(number1) - Integer.parseInt(number2);//判断是否为同一条数                     据,同条数据数量相减

                    inOrderList.get(i).put("number", sum + "");

                }

            }

        }

 

   3.单个List<Map<String,String>>相互比较,相同数据相加(转)

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

        Map<String, String> m1 = new HashMap<String, String>();

          

        m1.put("count""1");

        m1.put("name""帮宝适纸尿裤L164 超薄干爽夏季透气专用婴儿尿不湿");

        m1.put("province""江苏省");

        m1.put("date""2014-09-23 10:13:39");

        m1.put("channel""东环大润发");

        m1.put("city""苏州市");

        l.add(m1);

          

        Map<String, String> m2 = new HashMap<String, String>();

        m2.put("count""1");

        m2.put("name""帮宝适纸尿裤L164 超薄干爽夏季透气专用婴儿尿不湿");

        m2.put("province""江苏省");

        m2.put("date""2014-09-23 10:13:39");

        m2.put("channel""东环大润发");

        m2.put("city""泰州市");

        l.add(m2);

          

        Map<String, String> m3 = new HashMap<String, String>();

        m3.put("count""1");

        m3.put("name""帮宝适纸尿裤L164 超薄干爽夏季透气专用婴儿尿不湿");

        m3.put("province""江苏省");

        m3.put("date""2014-09-23 10:13:39");

        m3.put("channel""东环大润发");

        m3.put("city""泰州市");

        l.add(m3);

          

        List<Map<String, String>> countList = new ArrayList<Map<String,String>>();//用于存放最后的结果

        for (int i = 0; i < l.size(); i++) {

            String count = l.get(i).get("count");

            String name = l.get(i).get("name");

            String province = l.get(i).get("province");

            String date = l.get(i).get("date");

            String channel = l.get(i).get("channel");

            String city = l.get(i).get("city");

              

            int flag = 0;//0为新增数据,1为增加count

            for (int j = 0; j < countList.size(); j++) {

                String count_ = countList.get(j).get("count");

                String name_ = countList.get(j).get("name");

                String province_ = countList.get(j).get("province");

                String date_ = countList.get(j).get("date");

                String channel_ = l.get(j).get("channel");

                String city_ = countList.get(j).get("city");

                  

                if (count.equals(count_)&&

                        name.equals(name_)&&

                        province.equals(province_)&&

                        date.equals(date_)&&

                        channel.equals(channel_)&&

                        city.equals(city_)) {

      int sum = Integer.parseInt(l.get(i).get("count")) + Integer.parseInt(countList.get(j).get("count"));

                    countList.get(j).put("count", sum + "");

                    flag = 1;

                    continue;

                }

            }

            if (flag == 0) {

                countList.add(l.get(i));

            }

        }

        for (Map<String, String> map : countList) {

            System.out.println(map);

        }

    }

 

public class Test {

  

    /**

     * @param args

     */

    public static void main(String[] args) {

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

        Map<String,String> map1 = new HashMap<String,String>();

        map1.put("count""1");

        map1.put("name""帮宝适纸尿裤L164 超薄干爽夏季透气专用婴儿尿不湿");

        map1.put("province""江苏省");

        map1.put("date""2014-09-23 10:13:39");

        map1.put("channel""东环大润发");

        map1.put("city""苏州市");

        list.add(map1);

          

        Map<String,String> map2 = new HashMap<String,String>();

        map2.put("count""1");

        map2.put("name""帮宝适纸尿裤L164 超薄干爽夏季透气专用婴儿尿不湿");

        map2.put("province""江苏省");

        map2.put("date""2014-09-23 10:13:39");

        map2.put("channel""东环大润发");

        map2.put("city""泰州市");

        list.add(map2);

          

        Map<String,String> map3 = new HashMap<String,String>();

        map3.put("count""1");

        map3.put("name""帮宝适纸尿裤L164 超薄干爽夏季透气专用婴儿尿不湿");

        map3.put("province""江苏省");

        map3.put("date""2014-09-23 10:13:39");

        map3.put("channel""东环大润发");

        map3.put("city""泰州市");

        list.add(map3);

          

          

        Map<String,String> map4 = new HashMap<String,String>();

        map4.put("count""1");

        map4.put("name""帮宝适纸尿裤L164 超薄干爽夏季透气专用婴儿尿不湿");

        map4.put("province""江苏省");

        map4.put("date""2014-09-23 10:13:39");

        map4.put("channel""东环大润发");

        map4.put("city""苏州市");

        list.add(map4);

          

        System.out.println(mergeList(list));

          

          

    }

  

      

    /**

     * 合并相同的Map

     * @param list

     * @return

     */

    public static List<Map<String,String>> mergeList(List<Map<String,String>> list){

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

        for(int i=0;i<list.size();i++){

            Map<String,String> map = list.get(i);

            String name = map.get("name");

            String city = map.get("city");

            String count = map.get("count");

            Map<String,String> newMap=isExistSame(i,name,city,count,list);

            if(null==newMap){

                retList.add(map);

            }

            else{

                list.remove(map.get(i));

                retList.add(newMap);

            }

        }

        return retList;

    }

      

    private  static  Map<String,String> isExistSame(int i,String name,String city,String                              count,List<Map<String,String>> list){

        Map<String,String> newMap = null;

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

            Map<String,String> innerMap = list.get(j);

            String name1 = innerMap.get("name");

            String city1 = innerMap.get("city");

            String count1 = innerMap.get("count");

            if(name.equals(name1)&&city.equals(city1)){

                newMap = new HashMap<String,String>();

                newMap.put("count"""+(Integer.parseInt(count)+Integer.parseInt(count1)));

                Iterator<String> keyIterator = innerMap.keySet().iterator();

                while(keyIterator.hasNext()){

                    String key = keyIterator.next();

                    if(!key.equals("count")){

                        newMap.put(key, innerMap.get(key));

                    }

                }

                list.remove(j);

            }

        }

        return newMap;

    }

}

 

 

public static void  main(String[] args) {

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

        boolean m = true;

        for(int i=0;i<10000;i++){

            HashMap<String, String> map = new HashMap<String, String>();

            map.put("count""1");

            map.put("name""帮宝适纸尿裤L164 超薄干爽夏季透气专用婴儿尿不湿");

            map.put("province""江苏省");

            map.put("date""2014-09-23 10:13:39");

            map.put("channel""东环大润发");

            map.put("city", m ? "苏州市":"泰州市");

            m = !m;

            list.add(map);

        }

        System.out.println(System.currentTimeMillis());

        for(int i=list.size();--i>-1;){

            Map<String, String> src = list.get(i);

            int same = 0;

            for(int j=i-1;j>-1;j--){

                Map<String, String> tar = list.get(j);

                if(equals(src, tar)){

                    int count = Integer.parseInt(src.get("count"))

                            +Integer.parseInt(tar.get("count"));

                    src.put("count", count+"");

                    list.remove(j);

                    same++;

                }

            }

            i -=same;

        }

        System.out.println(list);

        System.out.println(System.currentTimeMillis());

    }

      

    public  static  boolean  equals(Map<String, String> src,Map<String, String> tar){

        Set<Entry<String,String>> entrySet = src.entrySet();

        String srcCount = src.remove("count");//count不参与比较

        String srcValue = null,tarValue = null;

        for (Iterator<Entry<String,String>> it = entrySet.iterator(); it.hasNext();) {

            Entry<String, String> entry = it.next();

            srcValue = entry.getValue();

            tarValue = tar.get(entry.getKey());

            if(srcValue.length()!=tarValue.length()||!srcValue.equals(tarValue)){

                src.put("count", srcCount);

                return  false;

            }

        }

        src.put("count", srcCount);

        return true;

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值