字符串转树图结构

将A/B/C/D.txt转换成树图结构显示,并存于mongDB

treeVo

private String key;
private String name;
private List<TreeVo> children;

首先将字符转换成TreeMap

 private static void put(TreeMap structure, String root, String rest,String path) {
        String[] tmp = rest.split("/", 2);
        TreeMap rootDir = (TreeMap) structure.get(root);
        if (rootDir == null) {
            rootDir = new TreeMap();
            structure.put(root, rootDir);
        }
        if (tmp.length == 1) { // path end
            rootDir.put(tmp[0], path);
        } else {
            put(rootDir, tmp[0], tmp[1],path);
        }
    }
 public static List<TreeVo> getTreeList(List<String> listOfPaths, String makePrefixStr){
        TreeMap structure = new TreeMap();
        for (String path : listOfPaths) {
            String[] tmp = path.replaceAll(makePrefixStr, "").split("/", 2);
            if(tmp.length==1){
                structure.put(tmp[0], tmp[0]);
            }else {
                put(structure,tmp[0],tmp[1], path);
            }
        }
        return setKeyValue(showFileToTree(structure),null,makePrefixStr);
    }

将treeMap转换成list,并移除不想显示的字段如:isNull.txt

private static List<TreeVo> setKeyValue(List<TreeVo> treeVoList, String parentName,String makePrefixStr){
        if (null != treeVoList) {
            Iterator<TreeVo> iterator = treeVoList.iterator();
            while (iterator.hasNext()) {
                TreeVo treeVo = iterator.next();
                StringBuilder stringBuffer = new StringBuilder();
                if (null != treeVo.getChildren() && StringUtils.isEmpty(treeVo.getKey())) {
                    stringBuffer.append(Optional.ofNullable(parentName).orElse(""))
                            .append(treeVo.getName())
                            .append("/");
                    treeVo.setKey( makePrefixStr + stringBuffer.toString());
                    setKeyValue(treeVo.getChildren(), stringBuffer.toString(), makePrefixStr);
                } else if (treeVo.getKey().contains("isNull.txt")) {
                     iterator.remove();
                }
            }
        }
       return treeVoList;
    }

存储结构

private Long projectId;
private TreeVo treeVo;
StateDirTreeVo stateDirTreeVo = new StateDirTreeVo();
        TreeVo treeVo = new TreeVo();
        treeVo.setName("名字");
        treeVo.setKey("key");
        treeVo.setChildren(FileOtherUtil.getTreeList(pathList, makePrefixStr));
        stateDirTreeVo.setProjectId(Long.valueOf(projectId));
        stateDirTreeVo.setTreeVo(treeVo);
        treeComponent.updateTreeByStateDirTreeVo(stateDirTreeVo, collectionName);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值