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