map父子维护的ebom父子部件关系计算组套数量

文章提供了一个Java方法,用于根据Map中存储的EBOM(EngineeringBillofMaterials)父子部件关系及其安装数量,递归计算组套总数量。方法通过获取当前部件的父部件及相应数量,逐层向上计算直至顶层,示例展示了如何计算G、E、F、D、C和B的组套数量。
摘要由CSDN通过智能技术生成

map父子维护的ebom父子部件关系计算组套数量

使用ebom时候,把部件父子关系和安装数量维护在了map上面,要计算组套数量,需要递归从当前往上取出父级安装数量相乘,一直取到最顶层。

在这里插入图片描述
G的组套数量:GDB=322=12
E的组套数量:ECB=232=12
C的组套数量:CB=32=6
B的组套数量:B=2

public class CalUtil {

    /**
     * 计算组套数量
     * @param map key是部件, value是数组,第一个值时部件,第二个值是key的部件安装数量
     * @param key
     * @return
     */
    public static int getAccUom(Map<String,String[]> map, String key){
        int num = 1;
        if(map.get(key)!=null){
            num = Integer.valueOf(map.get(key)[1])*getAccUom(map,map.get(key)[0]);
        }
        return num;
    }

    public static void main(String[] args) {
        Map<String, String[]> map = new HashMap<>();
        map.put("B",new String[]{"A","2"});
        map.put("C",new String[]{"B","3"});
        map.put("D",new String[]{"B","2"});
        map.put("E",new String[]{"C","2"});
        map.put("F",new String[]{"C","3"});
        map.put("G",new String[]{"D","3"});

        System.out.println("G安装数量:"+ CalUtil.getAccUom(map,"G"));
        System.out.println("E安装数量:"+ CalUtil.getAccUom(map,"E"));
        System.out.println("F安装数量:"+ CalUtil.getAccUom(map,"F"));
        System.out.println("D安装数量:"+ CalUtil.getAccUom(map,"D"));
        System.out.println("C安装数量:"+ CalUtil.getAccUom(map,"C"));
        System.out.println("B安装数量:"+ CalUtil.getAccUom(map,"B"));
    }
}

执行结果:

G安装数量:12
E安装数量:12
F安装数量:18
D安装数量:4
C安装数量:6
B安装数量:2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值