关于递归调用,实现树形菜单的样式
一:需求
现有以需求就是把某一个帖子的全部评论展示出来。
二:分析
关于对帖子的评论分为主评论和子评论,主评论就是对帖子的直接评论,子评论就是对评论的评论。
三:思路
先获取某一个帖子的全部主评论,递归判断是否有子评论,获取子评论。
四:编码
实体类:
1 import java.util.Date; 2 import java.util.List; 3 4 import com.fasterxml.jackson.annotation.JsonFormat; 5 6 import lombok.Data; 7 @Data 8 public class BsChannelPostReply { 9 private long replyId; 10 private String niceName; 11 @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") 12 private Date replyDate; 13 private String content; 14 private long directRepliedId;//回复的直接评论的replyId 15 private List<BsChannelPostReply> children;//下面的子评论 16 }
获取主评论列表,和递归全部子评论:
1 @Override 2 @Datasource(value="community")//切换数据源 3 public List<BsChannelPostReply> getMainReply(int postId) { 4 // TODO Auto-generated method stub 5 List<BsChannelPostReply> listMain=dao.getMainReply(postId);//获取主评论 6 if(listMain.size()>=0){//如果主评论不为空 7 for (BsChannelPostReply bsChannelPostReply : listMain) { 8 bsChannelPostReply.setChildren(getMainReplyChildren(bsChannelPostReply.getReplyId()));//加载子评论 9 } 10 } 11 return listMain; 12 } 13 14 @Override 15 @Datasource(value="community")//切换数据源 16 public List<BsChannelPostReply> getMainReplyChildren(long replyId) { 17 // TODO Auto-generated method stub 18 List<BsChannelPostReply> listChildren=dao.getMainReplyChildren(replyId);//根据当前的replayId获取当前级子评论列表 19 if(listChildren.size()>=0){ 20 for (BsChannelPostReply bsChannelPostReply : listChildren) { 21 bsChannelPostReply.setChildren(getMainReplyChildren(bsChannelPostReply.getReplyId()));//在判断当前子评论是否还有子评论,递归调用,直到没有子评论 22 } 23 } 24 return listChildren; 25 }
五:效果
根据这样的递归调用就可以实现理论上的获取无极限的子评论列表。
欢迎大家一起说出自己的想法。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Coding and Paper Letter(二十三)
资源整理。 1 Coding: 1.开源项目aom,基于Fotran90编写的水光学蒙特卡洛模型。可以模拟辐射量。 aomc 2.开源项目proSR,一种全新的单图像超分辨率重建方法。 proSR 3.开源项目conditional neural process,条件神经网络的jupyter notebook实现。 conditional neural process 4.如何将自己开发的R包推送到cran上,需要准备的东西。 prepare for cran 5.Python库flask ipywidgets,flask框架里的ipywidgets支持。 flask ipywidgets 6.针对生态学家的贝叶斯数据分析介绍。 bayes course 7.R中关于回归,GLM,混合效应模型和GLMM的wokrshop练习。 glmm course 8.R语言包bayesdfa,bayesdfa与Stan实施贝叶斯动态因子分析(DFA)。 bayesdfa 9.开放交通数据的资源。 opentransportdata 10.R语言包rangeModelMetadata,提供了创建与R...
- 下一篇
详解JVM内存管理与垃圾回收机制4 - References
Java通过new关键字来创建对象时,JVM在堆中开辟空间存放对象实例数据,这时,定义的局部变量仍存储在栈中,它包含指向堆中对象的指针 ( 即对象在堆内存的起始地址索引 ),而不是对象本身,这个指针在Java中,被称为引用。来看下面的Java方法,它持有一个由String解析而来的Integer对象。 这里可能会造成大家的误解:指针 = 引用,但实际上它们并不完全相同 当我们一提到指针,就很容易把指针与C语言中的指针划等号,实际上,"指针"是一个概念上的东西,不同的语言有不同的实现,因此在讨论问题时,最好明确前提。 从概念上来说:指针就是一个值,而这个值是某块内存的地址,通过这个值,就可以找到这块内存 (可参考维基百科)。 而C语言中的指针,可以指向内存中的任何地方,也可以参与运算,甚至还可以指向指针,以及指向指向指针的指针。因此,更多时候它只反映了指针寻址的特性。 Java中的引用也是一个值,但这个值不是随便某块内存的地址,而是某个值所在内存的地址(对象首地址),它关心的是这个值(或者对象),而不是地址。当值搬家以后(内存整理),这个引用也会跟着改变。因此,Java中引用可以认为是一...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题