设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间11 现在时间11 缓存数据 "如果你喜欢一个人, 一定要告诉她 不是为了要她报答, 而是让她在以后黑暗的日子里, 否定自己的时候, 想起世界上还有人这么喜欢她 她并非一无是处。"

"如果你喜欢一个人, 一定要告诉她 不是为了要她报答, 而是让她在以后黑暗的日子里, 否定自己的时候, 想起世界上还有人这么喜欢她 她并非一无是处。" -- 感谢你曾来过

查看: 842|回复: 4

Java递归实现评论多级回复功能

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:224
  • 打卡月天数:0
  • 打卡总奖励:3433
  • 最近打卡:2025-03-17 07:10:02
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
408
主题
377
精华
0
金钱
4658
积分
845
注册时间
2023-1-6
最后登录
2025-5-31

发表于 2023-2-17 12:35:27 | 显示全部楼层 |阅读模式
最近工作需要做一个评论功能,除了展示评论之外,还需要展示评论回复,评论的回复的回复,这里就用到了递归实现评论的多级回复。

评论实体

数据库存储字段:
  1. id
复制代码
评论id、
  1. parent_id
复制代码
回复评论id、
  1. message
复制代码
消息。其中如果评论不是回复评论,
  1. parent_id
复制代码
  1. -1
复制代码

创建一个评论实体
  1. Comment
复制代码
  1. public class Comment {

  2.     /**
  3.      * id
  4.      */
  5.     private Integer id;

  6.     /**
  7.      * 父类id
  8.      */
  9.     private Integer parentId;

  10.     /**
  11.      * 消息
  12.      */
  13.     private String message;
  14. }
复制代码
查询到所有的评论数据。方便展示树形数据,对
  1. Comment
复制代码
添加回复列表
  1. List<ViewComment> children
复制代码
  1. ViewComment
复制代码
结构如下:
  1. // 展示树形数据public class ViewComment {    /**     * id     */    private Integer id;    /**     * 父类id     */    private Integer parentId;    /**     * 消息     */    private String message;    /**     * 回复列表     */    private List<ViewComment> children = new ArrayList<>();}
复制代码
添加非回复评论

非回复评论的
  1. parent_id
复制代码
  1. -1
复制代码
,先找到非回复评论:
  1. List<ViewComment> viewCommentList = new ArrayList<>();
  2. // 添加模拟数据
  3. Comment comment1 = new Comment(1,-1,"留言1");
  4. Comment comment2 = new Comment(2,-1,"留言2");
  5. Comment comment3 = new Comment(3,1,"留言3,回复留言1");
  6. Comment comment4 = new Comment(4,1,"留言4,回复留言1");
  7. Comment comment5 = new Comment(5,2,"留言5,回复留言2");
  8. Comment comment6 = new Comment(6,3,"留言6,回复留言3");
  9. //添加非回复评论
  10. for (Comment comment : commentList) {
  11.     if (comment.getParentId() == -1) {
  12.         ViewComment viewComment = new ViewComment();
  13.         BeanUtils.copyProperties(comment,viewComment);
  14.         viewCommentList.add(viewComment);
  15.     }
  16. }
复制代码
递归添加回复评论

遍历每条非回复评论,递归添加回复评论:
  1. for(ViewComment viewComment : viewCommentList) {
  2.     add(viewComment,commentList);
  3. }
  4. private void add(ViewComment rootViewComment, List<Comment> commentList) {
  5.     for (Comment comment : commentList) {
  6.         // 找到匹配的 parentId  
  7.         if (rootViewComment.getId().equals(comment.getParentId())) {
  8.             ViewComment viewComment = new ViewComment();
  9.             BeanUtils.copyProperties(comment,viewComment);
  10.             rootViewComment.getChildren().add(viewComment);
  11.             //递归调用
  12.             add(viewComment,commentList);
  13.         }
  14.     }
  15. }
复制代码

  • 遍历每条非回复评论。
  • 非回复评论
    1. id
    复制代码
    匹配到评论的
    1. parentId
    复制代码
    ,添加到该评论的
    1. children
    复制代码
    列表中。
  • 递归调用。

结果展示:

133601w6gqzt4xzfytf72c.png


github 源码

https://github.com/jeremylai7/java-codes/tree/master/basis/src/main/java/recurve
到此这篇关于Java递归实现评论多级回复的文章就介绍到这了,更多相关Java评论多级回复内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:无名新人
  • 打卡总天数:2
  • 打卡月天数:0
  • 打卡总奖励:26
  • 最近打卡:2025-03-31 16:26:58
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
43
积分
10
注册时间
2023-5-3
最后登录
2025-3-31

发表于 2023-5-23 21:53:43 | 显示全部楼层
感谢分享~~~~学习学习~~~~~
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
16
积分
12
注册时间
2022-12-29
最后登录
2022-12-29

发表于 2024-1-26 11:22:46 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
29
积分
14
注册时间
2022-12-21
最后登录
2022-12-26

发表于 2024-12-20 02:29:15 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:无名新人
  • 打卡总天数:2
  • 打卡月天数:0
  • 打卡总奖励:21
  • 最近打卡:2024-08-09 02:19:32
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
38
积分
10
注册时间
2023-7-3
最后登录
2024-8-9

发表于 2025-4-23 04:31:14 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼
5楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表