美文网首页
递归思想实现设备树型父子级关系

递归思想实现设备树型父子级关系

作者: 康俊1024 | 来源:发表于2019-04-09 20:52 被阅读0次

    问题:

    已知设备信息(名称 + 本地编码),通过数据树型结构实现构建父子级关系。如下图


    树型结构.png

    代码如下:

    List<Map<String, String>> list = new ArrayList<Map<String, String>>();      
    for (int i = startRow; i <= endRow; i++) {
        Row tempRow = sheetToplogy.getRow(i);
        Map<String, String> map = new HashMap<>();
        this.buildTopologyMap(tempRow, 0, map);
        list.add(map);
    }
    Map<String, String> topologyMap = new LinkedHashMap<>();
    for (int index = 0; index < list.size(); index++) {
        Map<String, String> map = list.get(index);
        String parentSign = this.recursive(list, index, new Integer(map.get("level")));  //递归得到父编码
        topologyMap.put(map.get("sign"), parentSign);                                                //父子对应关系
    }
    private void buildTopologyMap(Row row, Integer startColumn, Map<String, String> map) throws Exception {
        for (int index = 0; index < 6; index++) {
            Cell cell = row.getCell(startColumn + index); 
            String cellValue = this.getCellStringValue(cell, false);
            if (cellValue != null && !"".equals(cellValue)) {
                map.put("name", cellValue);                               //设备名称
                map.put("level", (index + 1) + "");                       //第几个cell有值
                break;
            }
        }
        Cell cellSign = row.getCell(6);
        String sign = this.getCellStringValue(cellSign, false);
        map.put("sign", sign);                                                           //本地编码
    }
    private String recursive(List<Map<String, String>> list, int index, Integer level) {
        if (index == -1) {
            return "-1";
        } else {
            Map<String, String> map = list.get(index);
            Integer findLevel = new Integer(map.get("level"));
            if (level == (findLevel + 1)) {                                 //判断条件 当上一个cell有值
                return map.get("sign");
            } else {
                return recursive(list, index - 1, level);
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:递归思想实现设备树型父子级关系

          本文链接:https://www.haomeiwen.com/subject/irfwiqtx.html