通过Map进行分类

通过Map进行分类,以下通过一个小例子进行解析,说明更容易理解!

目的:根据物料编码+物料名字+物料id进行分类

操作步骤:
1、首先定义一个map类,map里面放着一个 key 以及 一个 value,如下代码所示:(key是指上面所说的 编码+没名字+id,value指的是满足这三个组合在一起的 细单)

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

2、进行遍历整个获得到的数据,是个list,遍历先判断物料编码以及名字是否为空,不为空的情况下,进行key的赋值,然后通过map的get(key)的方法获取满足条件的已分类的细单,判断,如果此时获取到已分类的细单为空,那么就新建一个list,然后把遍历的该条未分类的细单放进去,然后通过map的put(key,value)的方法进行放置,如果获取到的已分类的细单不为空,证明找到了放置该key所对应的value,那么直接把该条未分类的细单放进去已分类的list的细单中,具体的代码如下所示:

Map<String, List<AppPriceAffirmDetail>> map = new HashMap<String, List<AppPriceAffirmDetail>>();
        for (AppPriceAffirmDetail priceAffirmDetail : appPriceAffirmDetails) {
            String materialCode = priceAffirmDetail.getMaterialCode();
            String materialName = priceAffirmDetail.getMaterialName();
            Long priceInquiryMaterialId = priceAffirmDetail
                    .getPriceInquiryMaterialId();
            if (StringUtils.isBlank(materialCode)
                    && StringUtils.isBlank(materialName)) {
                continue;
            }
            String key = materialCode + "," + materialName + ","
                    + priceInquiryMaterialId;
            List<AppPriceAffirmDetail> priceAffirmDetails = map.get(key);
            if (priceAffirmDetails == null) {
                priceAffirmDetails = new ArrayList<AppPriceAffirmDetail>();
                priceAffirmDetails.add(priceAffirmDetail);
                map.put(key, priceAffirmDetails);
            } else {
                priceAffirmDetails.add(priceAffirmDetail);
            }
        }

3、完成分类后进行整理,通过set方法进行整理,得出来的东西就是 无聊编码+物料名称+物料id,然后以下就是 满足该条件的细单!由于界面需要,以下代码只有设置 物料编码以及物料名称,但是不影响分类的结果!
通过Map进行分类_第1张图片

    for (String str : keys) {
            String[] strs = str.split(",");
            AppPriceAffirmDetailByMaterial appPriceAffirmDetailByMaterial = new AppPriceAffirmDetailByMaterial();
            appPriceAffirmDetailByMaterial.setMaterialCode(strs[0]);
            appPriceAffirmDetailByMaterial.setMaterialName(strs[1]);
            List a = map.get(str);
            ......做你想做的事情......
            }

以上是小编在项目过程中的小小经验,如果有帮助到你,欢迎点赞或者给力一点哦!转发需注明文章的出处,谢谢!

你可能感兴趣的:(java,Map分类-java)