最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java遞歸實現(xiàn)評論多級回復功能

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

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

評論實體

數(shù)據(jù)庫存儲字段: 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;
}

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

List<ViewComment> children

ViewComment結(jié)構(gòu)如下:

// 展示樹形數(shù)據(jù)
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<>();
// 添加模擬數(shù)據(jù)
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);
            //遞歸調(diào)用 
            add(viewComment,commentList);
        }
    }
}
  • 遍歷每條非回復評論。
  • 非回復評論id匹配到評論的parentId,添加到該評論的children列表中。
  • 遞歸調(diào)用。

結(jié)果展示:

github 源碼

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

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

相關(guān)文章

  • 詳解java連接mysql數(shù)據(jù)庫的五種方式

    詳解java連接mysql數(shù)據(jù)庫的五種方式

    這篇文章主要介紹了詳解java連接mysql數(shù)據(jù)庫的五種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Java項目部署的完整流程(超詳細!)

    Java項目部署的完整流程(超詳細!)

    我相信很多Java新手都會遇到這樣一個問題,跟著教材敲代碼,很容易,但是讓他完整的實現(xiàn)一個應用項目卻不會,下面這篇文章主要給大家介紹了關(guān)于Java項目部署的完整流程,需要的朋友可以參考下
    2022-07-07
  • SpringBoot自定義全局異常處理器的問題總結(jié)

    SpringBoot自定義全局異常處理器的問題總結(jié)

    Springboot框架提供兩個注解幫助我們十分方便實現(xiàn)全局異常處理器以及自定義異常,處理器會優(yōu)先處理更具體的異常類型,如果沒有找到匹配的處理器,那么它會尋找處理更一般異常類型的處理器,本文介紹SpringBoot自定義全局異常處理器的問題,一起看看吧
    2024-01-01
  • Spring Boot讀取自定義配置文件

    Spring Boot讀取自定義配置文件

    在Spring Boot項目中我們經(jīng)常需要讀取application.yml配置文件的自定義配置,今天就來羅列一下從yaml讀取配置文件的一些常用手段和方法。
    2021-05-05
  • Java使用Calendar類實現(xiàn)動態(tài)日歷

    Java使用Calendar類實現(xiàn)動態(tài)日歷

    這篇文章主要為大家詳細介紹了Java使用Calendar類實現(xiàn)動態(tài)日歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • java本機內(nèi)存分配Native?memory?allocation?mmap失敗問題解決

    java本機內(nèi)存分配Native?memory?allocation?mmap失敗問題解決

    這篇文章主要介紹了java本機內(nèi)存分配Native?memory?allocation?mmap失敗問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • 詳解Java8?CompletableFuture的并行處理用法

    詳解Java8?CompletableFuture的并行處理用法

    Java8中有一個工具非常有用,那就是CompletableFuture,本章主要講解CompletableFuture的并行處理用法,感興趣的小伙伴可以了解一下
    2022-04-04
  • Java替換字符串replace和replaceAll方法舉例詳解

    Java替換字符串replace和replaceAll方法舉例詳解

    這篇文章主要介紹了Java中替換字符串的幾種方法,包括String類的replace()、replaceAll()、replaceFirst()方法,以及StringBuilder和StringBuffer類的replace()方法,還提到了一些第三方庫,如Hutool,它們提供了更豐富的字符串處理功能,需要的朋友可以參考下
    2025-02-02
  • 一篇文章帶你了解一些Java反射的學習記錄

    一篇文章帶你了解一些Java反射的學習記錄

    java反射機制是一個很好用的東西,用它可以解決很多死的東西,因為反射機制的靈活行很大,有了他,我們就不要花太多的時間來寫操做數(shù)據(jù)庫的代碼了,這個可以很大的減少開發(fā)時間,而且代碼的可讀性好
    2021-09-09
  • SpringBoot2.x中management.security.enabled=false無效的解決

    SpringBoot2.x中management.security.enabled=false無效的解決

    這篇文章主要介紹了SpringBoot2.x中management.security.enabled=false無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論

奈曼旗| 南投县| 滁州市| 凤庆县| 阿勒泰市| 石家庄市| 琼海市| 松滋市| 县级市| 革吉县| 扎赉特旗| 松原市| 肇东市| 黄骅市| 磐石市| 都安| 汉源县| 卫辉市| 海宁市| 墨玉县| 喜德县| 蛟河市| 普兰县| 东丰县| 长武县| 万山特区| 万盛区| 长治县| 泾川县| 鸡西市| 沅江市| 西宁市| 昌平区| 都江堰市| 万全县| 三穗县| 大石桥市| 揭西县| 仲巴县| 海城市| 金坛市|