其中Channel.java是栏目结构,ChannelDto是我自己封装的返回给前端的数据,可以根据自己的来

这个的逻辑就是双重循环遍历每个类别,然后判断如果当前类别是其他类别的父级,那么就把其他类别的数据数据放到当前栏目的子集中

如果不想显示所有的栏目 可以修改这个判断 就会只展示这个栏目下的所有数据

channel.getPid().toString().equals("0")

这个直接查询所有栏目数据传进去即可

List<Channel> list

代码

public List<ChannelDto> parseMenuTree(List<Channel> list) {
List<ChannelDto> result = new ArrayList<ChannelDto>(); //1.获取第一个节点
for (Channel channel : list) {
if (channel.getPid().toString().equals("0")) {
ChannelDto dto = new ChannelDto();
dto.setId(channel.getId().intValue())
.setChannelTitle(channel.getChannelTitle());
result.add(dto);
}
} //2.获取递归子节点
for (ChannelDto parent : result) {
parent = menuChild(parent, list);
}
return result;
} public ChannelDto menuChild(ChannelDto parent, List<Channel> list) {
for (Channel channel : list) {
if (parent.getId().equals(channel.getPid().intValue())) {
ChannelDto dto = new ChannelDto();
dto.setId(channel.getId().intValue())
.setChannelTitle(channel.getChannelTitle());
if (parent.getChildList() == null) {
parent.setChildList(new ArrayList<ChannelDto>());
}
parent.getChildList().add(dto);
dto = menuChild(dto, list);
}
}
return parent;
}

id:当前栏目的ID

pid:当前栏目的父级ID

childList:当前栏目的子集

最终展示成json是这个样子

    {
"id": 14,
"channelTitle": "一级分类",
"childList": [
{
"id": 15,
"channelTitle": "二级分类",
"childList": [
{
"id": 16,
"channelTitle": "三级分类"
},
{
"id": 18,
"channelTitle": "三级其他"
}
]
},
{
"id": 19,
"channelTitle": "其他二级1"
}
]
}

最新文章

  1. 【XLL 框架库函数】 TempErr/TempErr12
  2. Guava学习笔记(3):复写的Object常用方法
  3. Spring与Quartz的整合实现定时任务调度(转)
  4. 应用alter index &#215;&#215;&#215; monitoring usage;语句监控索引使用与否
  5. (九) 一起学 Unix 环境高级编程 (APUE) 之 线程
  6. 二十一、Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
  7. HTML5,CSS3 与 Javascript 制作视频播放器
  8. Oracle怎么更改用户名
  9. IOS uitableviewcell 向左滑动删除编辑等
  10. java下的第一个redis
  11. eclipse加入辅助线,配合代码格式化使用
  12. 笔记12 注入AspectJ切面
  13. wait event &amp; wake up
  14. sessionStorage:写入记事本功能[内容写入sessionStorage中,读取,删除]
  15. raft共识算法
  16. [转]笔记本怎么设置WIfi热点
  17. HTML(一)
  18. C++ 实现分数的四则运算
  19. Codeforces672D(SummerTrainingDay01-I)
  20. public class feign.RetryableException feign.RetryableException: Connection refused (Connection refused) executing POST http://common-wx/wx/auth/client/token/v1

热门文章

  1. c6和c7
  2. os.path.join()函数
  3. 毕业设计之zabbix+微信企业号报警
  4. mysql 分组统计、排序、取前N条记录解决方案
  5. 在Kubernetes上安装MySQL-PXC集群
  6. 前端1 — HTML — 更新完毕
  7. 用前端表格技术构建医疗SaaS 解决方案
  8. day08 外键字段的增删查改
  9. Scala【需求二:求各省市的各个指标】
  10. ES6必知,变量的结构赋值。