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

日报做的地方网站宁波seo关键词优化方法

日报做的地方网站,宁波seo关键词优化方法,外贸网站建设网络公司,seo是啥职位简介: 在实际开发中,构建树状层次结构是常见需求,如组织架构、目录结构或菜单系统。本教案通过解析给定的Java代码,展示如何使用Java 8 Stream API将扁平化的菜单数据转换为具有层级关系的树形结构。 1. 核心类定义 - Menu Data…

简介:

        在实际开发中,构建树状层次结构是常见需求,如组织架构、目录结构或菜单系统。本教案通过解析给定的Java代码,展示如何使用Java 8 Stream API将扁平化的菜单数据转换为具有层级关系的树形结构。

1. 核心类定义 - Menu

@Data
@NoArgsConstructor
@AllArgsConstructor
static class Menu {private Long id;private String name;private Long parentId;private List<Menu> children;
}

提示:此处定义了一个名为Menu的类,它包含了菜单项的基本属性,包括ID、名称、父菜单ID以及一个用于存储子菜单项的列表。

2. main方法解析及实现功能


输入参数:

  • List<Menu> menus:包含所有菜单项的集合。

输出结果:

  • List<Menu>:一个仅包含顶级菜单项的列表,每个顶级菜单项已填充了其下级子菜单。
public static void main(String[] args) {List<Menu> menus = menusData();/*** 从菜单列表中筛选出顶级菜单,并为其添加子菜单。** @param menus 菜单列表,包含所有菜单项。* @return 包含所有顶级菜单的列表,其中每个顶级菜单均已包含其所有子菜单。*/List<Menu> topLevelMenus = menus.stream() // 使用流处理menus集合.filter(menu -> menu.getParentId() == 0 || menus.stream().noneMatch(other -> other.getId().equals(menu.getParentId()))) // 筛选条件:父菜单ID为0或不存在对应父菜单的菜单项.peek(menu -> menu.setChildren(getChildren(menu, menus))) // 为每个顶级菜单设置子菜单.collect(Collectors.toList()); // 将筛选后的顶级菜单集合转换为List(Menu)类型}

 3. 辅助方法——获取指定菜单的所有子菜单

 /*** 获取指定菜单的所有子菜单。** @param menu 指定的菜单对象,我们要查找它的子菜单。* @param menus 所有菜单的列表,从中筛选出子菜单。* @return 返回一个包含指定菜单所有子菜单的列表。这个列表中的每个菜单对象都可能包含它们自己的子菜单列表。*/private static List<Menu> getChildren(Menu menu, List<Menu> menus) {// 使用流对菜单列表进行处理,筛选出指定菜单的子菜单return menus.stream().filter(child -> child.getParentId().equals(menu.getId())) // 筛选条件:菜单的父菜单ID与指定菜单ID匹配.peek(child -> child.setChildren(getChildren(child, menus))) // 递归设置每个子菜单的子菜单列表.collect(Collectors.toList()); // 收集结果,生成列表}

4. 示例数据生成方法 —— menusData()

private static List<Menu> menusData() {return Arrays.asList(new Menu(1L, "一级菜单1", 0L, null),new Menu(2L, "二级菜单1", 1L, null),new Menu(3L, "三级菜单1", 2L, null),new Menu(4L, "一级菜单2", 0L, null),new Menu(5L, "二级菜单2", 4L, null),new Menu(6L, "一级菜单3", 0L, null));
}

5.完整代码,以及演示(TreeExample.java)

package com.tenement.auto;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class TreeExample {@Data@NoArgsConstructor@AllArgsConstructorstaticclass Menu {private Long id;private String name;private Long parentId;private List<Menu> children;}public static void main(String[] args) {List<Menu> menus = menusData();/*** 从菜单列表中筛选出顶级菜单,并为其添加子菜单。** @param menus 菜单列表,包含所有菜单项。* @return 包含所有顶级菜单的列表,其中每个顶级菜单均已包含其所有子菜单。*/List<Menu> topLevelMenus = menus.stream() // 使用流处理menus集合.filter(menu -> menu.getParentId() == 0 || menus.stream().noneMatch(other -> other.getId().equals(menu.getParentId()))) // 筛选条件:父菜单ID为0或不存在对应父菜单的菜单项.peek(menu -> menu.setChildren(getChildren(menu, menus))) // 为每个顶级菜单设置子菜单.collect(Collectors.toList()); // 将筛选后的顶级菜单集合转换为List(Menu)类型}/*** 获取指定菜单的所有子菜单。** @param menu 指定的菜单对象,我们要查找它的子菜单。* @param menus 所有菜单的列表,从中筛选出子菜单。* @return 返回一个包含指定菜单所有子菜单的列表。这个列表中的每个菜单对象都可能包含它们自己的子菜单列表。*/private static List<Menu> getChildren(Menu menu, List<Menu> menus) {// 使用流对菜单列表进行处理,筛选出指定菜单的子菜单return menus.stream().filter(child -> child.getParentId().equals(menu.getId())) // 筛选条件:菜单的父菜单ID与指定菜单ID匹配.peek(child -> child.setChildren(getChildren(child, menus))) // 递归设置每个子菜单的子菜单列表.collect(Collectors.toList()); // 收集结果,生成列表}private static List<Menu> menusData() {return Arrays.asList(new Menu(1L, "一级菜单1", 0L,null),new Menu(2L, "二级菜单1", 1L,null),new Menu(3L, "三级菜单1", 2L,null),new Menu(4L, "一级菜单2", 0L,null),new Menu(5L, "二级菜单2", 4L,null),new Menu(6L, "一级菜单3", 0L,null));}}

总结:该案例展示了如何利用Java 的Stream API对菜单数据进行处理,首先筛选出顶级菜单项,并通过递归方式为其添加子菜单。最后,得到了一个完整的树形菜单结构。 

http://www.dt0577.cn/news/49344.html

相关文章:

  • 2018年公司网站建设费分录哪家培训机构学校好
  • 微信兼职网站开发北京网站优化排名推广
  • 新手站长做装修网站网站优化价格
  • 企业网站建设内存顶尖文案
  • 大兴网站建设价格网站如何提交百度收录
  • 网站开发过程中遇到的问题及解决办法企业推广方法
  • 黄冈建设局网站竞价推广外包
  • 怎么做b2c网站百度服务电话
  • 山西大川建设有限公司网站小红书关键词排名怎么做
  • 免费推广网站平台排名百度seo站长工具
  • 免费软件下载存在哪些风险seo短视频网页入口引流
  • ui培训机构排行榜网站页面的优化
  • 淘宝网站建设教程视频站内搜索工具
  • 苏州做网站最好公司哪家好网站推广的四个阶段
  • 宁波网站建设营销推广属于网络营销特点的是
  • 如何查看网站建站程序百度营销客户端
  • 郑州企业网站制作怎么做新手seo入门教程
  • 网站制作需要什么软件有哪些鸡西seo
  • 网站导航的作用seo 排名 优化
  • 快速做网站套餐seo运营是什么意思
  • C 网站开发招聘求老哥给几个靠谱的网站
  • 网站建设哪家百度seo优化价格
  • 社交网站建设百度服务商
  • 苏州知名高端网站建设网站seo排名
  • 高级网站建设费用关键词抓取工具都有哪些
  • 男女做爰全过程网站301313龙虎榜
  • 代做网站推广的公司百度账号怎么注销
  • 官方网站模版厦门百度竞价推广
  • 乐基儿做黎明网站的女郎2023新冠结束了吗
  • wordpress多语言内容添加太原seo网络优化招聘网