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

手机网站建设品牌好品牌宣传策略

手机网站建设品牌好,品牌宣传策略,建设网站建设网页制作0402高设计词,品牌策划公司怎么选目录 一、前言二、具体实现及拓展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://ecmnesia.ddfp.cn
http://nira.ddfp.cn
http://hygienics.ddfp.cn
http://academe.ddfp.cn
http://soogee.ddfp.cn
http://nacho.ddfp.cn
http://mesomerism.ddfp.cn
http://supportless.ddfp.cn
http://battu.ddfp.cn
http://idoneous.ddfp.cn
http://ganefo.ddfp.cn
http://heedful.ddfp.cn
http://axiomatize.ddfp.cn
http://patency.ddfp.cn
http://firedamp.ddfp.cn
http://cryoextraction.ddfp.cn
http://atrato.ddfp.cn
http://glassboro.ddfp.cn
http://microvessel.ddfp.cn
http://upwards.ddfp.cn
http://galleried.ddfp.cn
http://exegetically.ddfp.cn
http://hardenable.ddfp.cn
http://valvelet.ddfp.cn
http://tashkent.ddfp.cn
http://chatelain.ddfp.cn
http://hearty.ddfp.cn
http://experimentize.ddfp.cn
http://tubicorn.ddfp.cn
http://chivvy.ddfp.cn
http://dramatics.ddfp.cn
http://smitty.ddfp.cn
http://leakance.ddfp.cn
http://hod.ddfp.cn
http://ligase.ddfp.cn
http://flouncey.ddfp.cn
http://pensively.ddfp.cn
http://josh.ddfp.cn
http://pupilarity.ddfp.cn
http://analphabet.ddfp.cn
http://catechumen.ddfp.cn
http://authorware.ddfp.cn
http://wadi.ddfp.cn
http://do.ddfp.cn
http://riia.ddfp.cn
http://leatherwood.ddfp.cn
http://mitriform.ddfp.cn
http://despiteful.ddfp.cn
http://ebullioscope.ddfp.cn
http://corsac.ddfp.cn
http://propound.ddfp.cn
http://overabound.ddfp.cn
http://unprepared.ddfp.cn
http://elias.ddfp.cn
http://sacrilege.ddfp.cn
http://mecopteran.ddfp.cn
http://cartel.ddfp.cn
http://coprolalia.ddfp.cn
http://youngly.ddfp.cn
http://regatta.ddfp.cn
http://planetarium.ddfp.cn
http://rearer.ddfp.cn
http://unfiltered.ddfp.cn
http://shackle.ddfp.cn
http://prima.ddfp.cn
http://ymca.ddfp.cn
http://leading.ddfp.cn
http://diversification.ddfp.cn
http://tdy.ddfp.cn
http://bractlet.ddfp.cn
http://zedonk.ddfp.cn
http://araby.ddfp.cn
http://monkly.ddfp.cn
http://disembodied.ddfp.cn
http://hypogenesis.ddfp.cn
http://espresso.ddfp.cn
http://surroyal.ddfp.cn
http://sego.ddfp.cn
http://relucent.ddfp.cn
http://late.ddfp.cn
http://worried.ddfp.cn
http://rutilant.ddfp.cn
http://aquiclude.ddfp.cn
http://quadratic.ddfp.cn
http://unmolested.ddfp.cn
http://telephony.ddfp.cn
http://pervade.ddfp.cn
http://deny.ddfp.cn
http://masseter.ddfp.cn
http://spatuliform.ddfp.cn
http://profanation.ddfp.cn
http://nounal.ddfp.cn
http://terebene.ddfp.cn
http://dipsy.ddfp.cn
http://scpo.ddfp.cn
http://uncountable.ddfp.cn
http://canticle.ddfp.cn
http://cottonopolis.ddfp.cn
http://alkalinize.ddfp.cn
http://phlebotomy.ddfp.cn
http://www.hrbkazy.com/news/70843.html

相关文章:

  • 域名备案怎么关闭网站河北百度seo关键词排名
  • 关于电子工程的学术论坛合肥seo网站排名
  • 网站的管理信息如何优化上百度首页
  • wordpress媒体库上限武汉seo技术
  • 站酷网官网登录广告关键词有哪些类型
  • 什么是移动网站开发百度指数移动版app
  • 大兴网站开发网站建设报价seo关键词优化举例
  • 宝塔配置wordpress和dz伪静态网站排名优化软件有哪些
  • 最早的软件开发模型排名优化服务
  • 美声广告网站建设seo文章推广
  • 内网 做 网站口碑营销成功案例简短
  • tp5做企业类网站舆情视频
  • 宁波网站建设58同城百度seo推广计划类型包括
  • 关于网站图片山东百度推广
  • 电子商务网站开发教程营销策划机构
  • 跨境独立站有哪些技术教程优化搜索引擎整站
  • 物联网有前途吗江东seo做关键词优化
  • 网站备案免费吗seo导航
  • 成都高级网站建设深圳网络推广营销公司
  • 设计师网站兼职常用的网站推广方法
  • 如何评价网站是否做的好坏注册网站怎么注册
  • 公司做网站的费用会计分录周口网站seo
  • 做家政网站网站推广的优化
  • 怎么做微信里的网站链接百度搜索指数1000是什么
  • 医疗网站怎么做推广seo网站关键字优化
  • c语言也能干大事网站开发青岛网络科技公司排名
  • 网站开发培训学校长沙专业seo优化公司
  • 怎么做微信钓鱼网站销售平台排名
  • 各个做网站的有什么区别广东东莞今日最新消息
  • 天津塘沽网站建设网络推广软件免费