亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java遞歸實現評論多級回復功能

 更新時間:2022年06月27日 11:31:38   作者:小碼code  
這篇文章主要介紹了Java遞歸實現評論多級回復功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

最近工作需要做一個評論功能,除了展示評論之外,還需要展示評論回復,評論的回復的回復,這里就用到了遞歸實現評論的多級回復。

評論實體

數據庫存儲字段: id 評論id、parent_id 回復評論id、message 消息。其中如果評論不是回復評論,parent_id-1。

創(chuàng)建一個評論實體 Comment

public class Comment {

    /**
     * id
     */
    private Integer id;

    /**
     * 父類id
     */
    private Integer parentId;

    /**
     * 消息
     */
    private String message;
}

查詢到所有的評論數據。方便展示樹形數據,對Comment添加回復列表

List<ViewComment> children

ViewComment結構如下:

// 展示樹形數據
public class ViewComment {
    /**
     * id
     */
    private Integer id;
    /**
     * 父類id
     */
    private Integer parentId;
    /**
     * 消息
     */
    private String message;
    /**
     * 回復列表
     */
    private List<ViewComment> children = new ArrayList<>();
}

添加非回復評論

非回復評論的parent_id-1,先找到非回復評論:

List<ViewComment> viewCommentList = new ArrayList<>();
// 添加模擬數據
Comment comment1 = new Comment(1,-1,"留言1");
Comment comment2 = new Comment(2,-1,"留言2");
Comment comment3 = new Comment(3,1,"留言3,回復留言1");
Comment comment4 = new Comment(4,1,"留言4,回復留言1");
Comment comment5 = new Comment(5,2,"留言5,回復留言2");
Comment comment6 = new Comment(6,3,"留言6,回復留言3");
//添加非回復評論
for (Comment comment : commentList) {
    if (comment.getParentId() == -1) {
        ViewComment viewComment = new ViewComment();
        BeanUtils.copyProperties(comment,viewComment);
        viewCommentList.add(viewComment);
    }
}

遞歸添加回復評論

遍歷每條非回復評論,遞歸添加回復評論:

for(ViewComment viewComment : viewCommentList) {
    add(viewComment,commentList);
}
private void add(ViewComment rootViewComment, List<Comment> commentList) {
    for (Comment comment : commentList) {
        // 找到匹配的 parentId  
        if (rootViewComment.getId().equals(comment.getParentId())) {
            ViewComment viewComment = new ViewComment();
            BeanUtils.copyProperties(comment,viewComment);
            rootViewComment.getChildren().add(viewComment);
            //遞歸調用 
            add(viewComment,commentList);
        }
    }
}
  • 遍歷每條非回復評論。
  • 非回復評論id匹配到評論的parentId,添加到該評論的children列表中。
  • 遞歸調用。

結果展示:

github 源碼

https://github.com/jeremylai7/java-codes/tree/master/basis/src/main/java/recurve

到此這篇關于Java遞歸實現評論多級回復的文章就介紹到這了,更多相關Java評論多級回復內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot整合Mybatis-plus實現多級評論功能

    SpringBoot整合Mybatis-plus實現多級評論功能

    本文介紹了如何使用SpringBoot整合Mybatis-plus實現多級評論功能,同時提供了數據庫的設計和詳細的后端代碼,前端界面使用的Vue2,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-05-05
  • Mybatis?連接mysql數據庫底層運行的原理分析

    Mybatis?連接mysql數據庫底層運行的原理分析

    這篇文章主要介紹了Mybatis?連接mysql數據庫底層運行的原理分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringIOC DI循環(huán)依賴實例詳解

    SpringIOC DI循環(huán)依賴實例詳解

    這篇文章主要介紹了SpringIOC——DI循環(huán)依賴,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Java堆空間爆滿導致宕機的問題分析及解決

    Java堆空間爆滿導致宕機的問題分析及解決

    團隊有一個服務,一直運行的好好的,突然訪問異常了,先是請求超時,然后直接無法訪問,本文將給大家介紹Java堆空間爆滿導致宕機的問題分析及解決,需要的朋友可以參考下
    2024-02-02
  • 詳解Java中的線程讓步y(tǒng)ield()與線程休眠sleep()方法

    詳解Java中的線程讓步y(tǒng)ield()與線程休眠sleep()方法

    Java中的線程讓步會讓線程讓出優(yōu)先級,而休眠則會讓線程進入阻塞狀態(tài)等待被喚醒,這里我們對比線程等待的wait()方法,來詳解Java中的線程讓步y(tǒng)ield()與線程休眠sleep()方法
    2016-07-07
  • Java:不支持發(fā)行版本5的超詳細簡單解決方案

    Java:不支持發(fā)行版本5的超詳細簡單解決方案

    發(fā)行版本5是Java5,已經是十多年前的版本了,現在已經不再被支持,如果您使用的是舊版的Java開發(fā)工具,可能會出現這樣的錯誤,這篇文章主要給大家介紹了關于Java:不支持發(fā)行版本5的超詳細簡單解決方案,需要的朋友可以參考下
    2024-01-01
  • Spring Boot詳解配置文件的用途與用法

    Spring Boot詳解配置文件的用途與用法

    SpringBoot項目是一個標準的Maven項目,它的配置文件需要放在src/main/resources/下,其文件名必須為application,其存在兩種文件形式,分別是properties和yaml(或者yml)文件
    2022-06-06
  • JavaEE實現基于SMTP協(xié)議的郵件發(fā)送功能

    JavaEE實現基于SMTP協(xié)議的郵件發(fā)送功能

    這篇文章主要為大家詳細介紹了JavaEE實現基于SMTP協(xié)議的郵件發(fā)送功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Java AES加密和解密教程

    Java AES加密和解密教程

    這篇文章主要介紹了Java AES加密和解密的相關資料,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-12-12
  • 詳解Java內部類與對象的打印概念和流程

    詳解Java內部類與對象的打印概念和流程

    在 Java 中,可以將一個類定義在另一個類里面或者一個方法里面,這樣的類稱為內部類。廣泛意義上的內部類一般來說包括這四種:成員內部類、局部內部類、匿名內部類和靜態(tài)內部類
    2021-10-10

最新評論