欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java利用遞歸調(diào)用實現(xiàn)樹形菜單的樣式

 更新時間:2018年09月21日 14:41:46   作者:曾將  
這篇文章主要給大家介紹了關(guān)于java利用遞歸調(diào)用實現(xiàn)樹形菜單樣式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一:需求

現(xiàn)有以需求就是把某一個帖子的全部評論展示出來。

二:分析

關(guān)于對帖子的評論分為主評論和子評論,主評論就是對帖子的直接評論,子評論就是對評論的評論。

三:思路

先獲取某一個帖子的全部主評論,遞歸判斷是否有子評論,獲取子評論。

遞歸本質(zhì):程序調(diào)用自身的編程技巧叫做遞歸。

程序調(diào)用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種算法在程序設(shè)計語言中廣泛應(yīng)用。 一個過程或函數(shù)在其定義或說明中有直接或間接調(diào)

用自身的一種方法,它通常把一個大型復(fù)雜的問題層層轉(zhuǎn)化為一個與原問題相似的規(guī)模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過

程所需要的多次重復(fù)計算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。

四:編碼

實體類:

 import java.util.Date;
 import java.util.List;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
 
 import lombok.Data;
 @Data
 public class BsChannelPostReply {
 private long replyId;
 private String niceName;
 @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") 
 private Date replyDate;
 private String content;
 private long directRepliedId;//回復(fù)的直接評論的replyId
 private List<BsChannelPostReply> children;//下面的子評論
 }

獲取主評論列表,和遞歸全部子評論:

 @Override
 @Datasource(value="community")//切換數(shù)據(jù)源
 public List<BsChannelPostReply> getMainReply(int postId) {
  // TODO Auto-generated method stub
  List<BsChannelPostReply> listMain=dao.getMainReply(postId);//獲取主評論
  if(listMain.size()>=0){//如果主評論不為空
  for (BsChannelPostReply bsChannelPostReply : listMain) {
   bsChannelPostReply.setChildren(getMainReplyChildren(bsChannelPostReply.getReplyId()));//加載子評論
  }
  }
  return listMain;
 }
 
 @Override
 @Datasource(value="community")//切換數(shù)據(jù)源
 public List<BsChannelPostReply> getMainReplyChildren(long replyId) {
  // TODO Auto-generated method stub
  List<BsChannelPostReply> listChildren=dao.getMainReplyChildren(replyId);//根據(jù)當(dāng)前的replayId獲取當(dāng)前級子評論列表
  if(listChildren.size()>=0){
  for (BsChannelPostReply bsChannelPostReply : listChildren) {
   bsChannelPostReply.setChildren(getMainReplyChildren(bsChannelPostReply.getReplyId()));//在判斷當(dāng)前子評論是否還有子評論,遞歸調(diào)用,直到?jīng)]有子評論
  }
  }
  return listChildren;
 }

五:效果

根據(jù)這樣的遞歸調(diào)用就可以實現(xiàn)理論上的獲取無極限的子評論列表。

 

慎用Java遞歸調(diào)用

 在java語言中,使用遞歸調(diào)用時,如果過多的調(diào)用容易造成java.lang.StackOverflowError即棧溢出和程序執(zhí)行過慢。這是一個潛在Bug和影響程序執(zhí)行效率問題,需要謹(jǐn)慎使用。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • java中synchronized鎖的升級過程

    java中synchronized鎖的升級過程

    這篇文章主要介紹了java中synchronized鎖的升級過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 重新實現(xiàn)hashCode()方法

    重新實現(xiàn)hashCode()方法

    hashCode()是Java中的一個重要方法,用于計算對象的哈希碼。本文介紹了如何重新實現(xiàn)hashCode()方法,包括使用對象的屬性計算哈希碼、使用字符串拼接計算哈希碼、使用隨機(jī)數(shù)計算哈希碼等方法。同時,還介紹了如何避免哈希沖突,提高哈希表的效率。
    2023-04-04
  • Spring Boot 2 實戰(zhàn):自定義啟動運(yùn)行邏輯實例詳解

    Spring Boot 2 實戰(zhàn):自定義啟動運(yùn)行邏輯實例詳解

    這篇文章主要介紹了Spring Boot 2 實戰(zhàn):自定義啟動運(yùn)行邏輯,結(jié)合實例形式詳細(xì)分析了Spring Boot 2自定義啟動運(yùn)行邏輯詳細(xì)操作技巧與注意事項,需要的朋友可以參考下
    2020-05-05
  • SpringBoot各種事務(wù)操作實戰(zhàn)(自動回滾、手動回滾、部分回滾)

    SpringBoot各種事務(wù)操作實戰(zhàn)(自動回滾、手動回滾、部分回滾)

    本文主要介紹了SpringBoot各種事務(wù)操作實戰(zhàn),包含自動回滾、手動回滾、部分回滾這三種,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • Springboot整合多數(shù)據(jù)源配置流程詳細(xì)講解

    Springboot整合多數(shù)據(jù)源配置流程詳細(xì)講解

    這篇文章主要介紹了Springboot整合多數(shù)據(jù)源配置流程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-03-03
  • RxJava2.x+ReTrofit2.x多線程下載文件的示例代碼

    RxJava2.x+ReTrofit2.x多線程下載文件的示例代碼

    本篇文章主要介紹了RxJava2.x+ReTrofit2.x多線程下載文件的示例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-09-09
  • Java String對象使用方法詳解

    Java String對象使用方法詳解

    這篇文章主要介紹了Java String對象使用方法詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 詳解Java中的數(shù)組與字符串相關(guān)知識

    詳解Java中的數(shù)組與字符串相關(guān)知識

    這篇文章主要介紹了詳解Java中的數(shù)組與字符串相關(guān)知識,包括操作字符串的一些基本方法列舉,需要的朋友可以參考下
    2015-09-09
  • Java Robot應(yīng)用示例之機(jī)器人功能

    Java Robot應(yīng)用示例之機(jī)器人功能

    這篇文章主要為大家詳細(xì)介紹了Java Robot應(yīng)用示例之機(jī)器人功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Springboot與Maven多環(huán)境配置的解決方案

    Springboot與Maven多環(huán)境配置的解決方案

    多環(huán)境配置的解決方案有很多,我看到不少項目的多環(huán)境配置都是使用Maven來實現(xiàn)的,本文就實現(xiàn)Springboot與Maven多環(huán)境配置,感興趣的可以了解下
    2021-06-06

最新評論