当前位置: 首页 > news >正文

中国建设网站企业网上银行业务功能注册网址要多少钱

中国建设网站企业网上银行业务功能,注册网址要多少钱,wordpress翻译了 mo无效,福建建设监理网站目录 一、前言二、具体实现及拓展2.1、递归-目标节点到根节点的路径数据2.2、list转换为tree结构2.3、tree转换为list结构 一、前言 这么多年工作经历中,“数据结构和算法”真的是超重要,工作中很多业务都能抽象成某种数据结构问题。下面是项目中遇到的…

目录

  • 一、前言
  • 二、具体实现及拓展
    • 2.1、递归-目标节点到根节点的路径数据
    • 2.2、list转换为tree结构
    • 2.3、tree转换为list结构

一、前言

这么多年工作经历中,“数据结构和算法”真的是超重要,工作中很多业务都能抽象成某种数据结构问题。下面是项目中遇到的一个问题。
业务背景:
在一个复杂的N叉树目录上,通过模糊搜索只返回搜索到的【要返回完整的从root到目标节点】节点链路,以便外围系统直接使用
分析:
按照实际操作,模糊搜索只能搜索到需要的几个目标节点数据,但实际业务需要的是这些目标节点到根节点的结构,以便完美展示。
在这里插入图片描述

问题抽象:
N叉树中,找到所有目标节点到根节点的数据,并构建成tree结构返回。如下图,要返回这些目标节点到根节点的整个路径上的节点数据。
在这里插入图片描述

二、具体实现及拓展

完整的代码如下

 public void filterNodeFromTree(){//查询所有的【"有树形结构的"】列表数据List<NodeTreeDo> originList = new ArrayList<>();Map<String,NodeTreeDo> originMap = originList.stream().collect(Collectors.toMap(NodeTreeDo::getId,ma->ma));//目标节点idList<String> targetIds = new ArrayList<>();Set<String> curRootIdSet = new HashSet<>(); //收集某个目标节点到root的路径经过的所有节点for(String id : targetIds){if(curRootIdSet.contains(id)) continue;//已经经历过路径,跳过curRootIdSet.addAll(collectNeedNode(originMap,id));}//收集到所有需要的节点的id,然后在过滤多余的List<NodeTreeDo> needList = originList.stream().filter(k->curRootIdSet.contains(k.getId())).collect(Collectors.toList());//构建成treelistToTree(needList);}

2.1、递归-目标节点到根节点的路径数据

private Set<String> collectNeedNode(Map<String,NodeTreeDo> originMap,String targetId){Set<String> idResultSet = new HashSet<>();collectNeedNode(originMap,targetId,idResultSet);return idResultSet;}private boolean collectNeedNode(Map<String,NodeTreeDo> originMap,String targetId,Set<String> idSet){if(!originMap.containsKey(targetId)) return false;idSet.add(targetId);NodeTreeDo cur = originMap.get(targetId);return collectNeedNode(originMap,cur.getParentId(),idSet);}

2.2、list转换为tree结构

    private List<NodeTreeDo> listToTree(List<NodeTreeDo> originList){Map<String, List<NodeTreeDo>> nodeByPidMap = originList.stream().collect(Collectors.groupingBy(NodeTreeDo::getParentId));// 循环一次设置当前节点的子节点originList.forEach(node -> node.setChildren(nodeByPidMap.get(node.getId())));// 获取 一级列表return originList.stream().filter(k->"".equals(k.getParentId())).collect(Collectors.toList());}

2.3、tree转换为list结构

  private List<NodeTreeDo> treeToList(List<NodeTreeDo> treeList){List<NodeTreeDo> resultList = new ArrayList<>();for(NodeTreeDo node : treeList){getAllListFromChildren(node,resultList);}return resultList;}private void getAllListFromChildren(NodeTreeDo node,List<NodeTreeDo> resultList){NodeTreeDo copy = CommonUtil.transForm(node,NodeTreeDo.class);copy.setChildren(null); //深度拷贝后,把children设置为nullresultList.add(copy);if(CollectionUtils.isNotEmpty(node.getChildren())){for(NodeTreeDo temp : node.getChildren()){getAllListFromChildren(temp,resultList);}}//没子节点了,自动会退出}
http://www.yayakq.cn/news/699860/

相关文章:

  • 网站怎么做小程序上海seo网络推广渠道
  • 手游传奇新开服网站企业 网站建设
  • 太原seo整站优化推荐一个代做毕业设计的网站
  • 简历模板免费网站php网站开发怎么接私活
  • 网站搜索 代码淮南商城网站建设地址
  • 做网站资质荣誉用的图片做警员编号网站
  • 新网站seo外包网站模板预览
  • 南通网站建设论文朝阳区网站建设推广seo
  • 建设工程竣工验收消防备案网站龙岗区属于哪个市
  • 找人做网站!!! 网站定制开发云南久久建设投资有限公司
  • 网站开发怎么做账甘孜热门抖音代运营
  • 好看怎么上传视频网站吗提供营销型网站设计
  • 珠宝行业网站建设wordpress 排版
  • 成都建设门户网站wordpress 文章 繁体
  • 深圳网站建设开发公司哪家好格子三合一交友婚恋网站模板
  • 单页面网站设计网站欣赏wordpress远程命令
  • 建设网站包维护哈尔滨模板建站公司推荐
  • 西安网站建设电话河北省网站建设公司
  • php做的网站后台wordpress jenn 主题
  • 酒店网站的开发及其设计方案湖南现在有什么网站做农副产品
  • 哪个网站做网上旅社预定网站建设指南 读书心得
  • 郴州网站建设专业现状报告网站开发兼职成都
  • 更改网站标题环球资源网发展现状
  • 深圳禅城网站设计dw网站制作
  • 怎么做韩剧网站的翻译网站设计师要求
  • 网站开发需要学些什么?为什么要建设企业的微网站
  • 做鞋子的网站网站开发都做些什么
  • 如何做优酷网站赚钱宁波住房和城乡建设部网站
  • 潍坊哪里能找到做网站的wordpress上方登录
  • 官方网站下载拼多多邯郸邯山区网站建设