Java的逻辑小业务根据指定的map对应属性和指定字符串数据转变为全新的map

Posted Acmen-zym

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的逻辑小业务根据指定的map对应属性和指定字符串数据转变为全新的map相关的知识,希望对你有一定的参考价值。

下面为固定格式参数

        String inputProperties = "20000:imobile;20000:型号;20000:reno6-刀锋金属壳;231100582:简约;28102:OPPO;28102:OPPO型号;28102:reno6;12060095:深圳市古石木商贸有限公司";
        Map<String, String> propNameMap = new HashMap<>();//生产环境中这个数据是会通过API赋值进去的
        propNameMap.put("20000", "品牌");
        propNameMap.put("231100582", "流行元素");
        propNameMap.put("28102", "适用手机机型");
        propNameMap.put("12060095", "生产企业");

下面为生成全新格式的要求图片
在这里插入图片描述
测试环境业务代码
如果有大佬有更好的方案,希望大佬可以指点一二,目前我是这样实现的

    @Test
    public void test() {
        String inputProperties = "20000:imobile;20000:型号;20000:reno6-刀锋金属壳;231100582:简约;28102:OPPO;28102:OPPO型号;28102:reno6;12060095:深圳市古石木商贸有限公司";
        Map<String, String> propNameMap = new HashMap<>();//生产环境中这个数据是会通过API赋值进去的
        propNameMap.put("20000", "品牌");
        propNameMap.put("231100582", "流行元素");
        propNameMap.put("28102", "适用手机机型");
        propNameMap.put("12060095", "生产企业");
        //map的key为属性名map的value为对应属性,例如:key=品牌 value=其它
        Map<String, String> propValueMap = new HashMap<>();
        //供应商产品的属性集合,格式例如
        ArrayList<String> propertyList = Lists.newArrayList(inputProperties.split(";"));
        //开始循环将标准属性值设置到map中
        for (String properties : propertyList) {
            String[] pidVal = properties.split(":");
            String pid = pidVal[0], val = pidVal[1];
            String pName = propNameMap.get(pid);
            if (propValueMap.containsKey(pid)) {//propValueMap中正常数据是属性名和属性值,如果是pid则表示是需要设置的子属性
                //重新覆盖属性值,如果以下方数据28102为例子,没有被覆盖的pName=OPPO,覆盖后为pName=OPPO型号
                pName = propValueMap.get(pid);
                propValueMap.remove(pid);
            } else if (propValueMap.containsKey(pName)) {//如果被包含了则可能是子属性,例如品牌下的型号
                //这里存的是pid和属性名,主要是用来兼容 28102:OPPO;28102:OPPO型号;28102:reno6 这种格式的数据
                propValueMap.put(pid, val);
            }
            propValueMap.put(pName, val);
        }
        System.out.println("propValueMap = " + propValueMap.toString());
    }

以上是关于Java的逻辑小业务根据指定的map对应属性和指定字符串数据转变为全新的map的主要内容,如果未能解决你的问题,请参考以下文章

Java实现获取命令行中获取指定数据

怎样获取map里指定key对应的value值

如何通过获取map中的key来获得与key对应的value值,进行运算

微信小程序怎么实现点击跳转到指定锚点?

java hashmap 得到指定key的value

函数-map,filter