通过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,然后以下就是 满足该条件的细单!由于界面需要,以下代码只有设置 物料编码以及物料名称,但是不影响分类的结果!
效果类似下图所示,打钩的忽略掉,那是中标与未中标的区分

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

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值