一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java利用遞歸調用實現樹形菜單的樣式

java利用遞歸調用實現樹形菜單的樣式

2021-06-01 12:13曾將 Java教程

這篇文章主要給大家介紹了關于java利用遞歸調用實現樹形菜單樣式的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一:需求

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

二:分析

關于對帖子的評論分為主評論和子評論,主評論就是對帖子的直接評論,子評論就是對評論的評論。

三:思路

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

遞歸本質:程序調用自身的編程技巧叫做遞歸。

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

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

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

四:編碼

實體類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;//回復的直接評論的replyid
private list<bschannelpostreply> children;//下面的子評論
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@override
@datasource(value="community")//切換數據源
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")//切換數據源
public list<bschannelpostreply> getmainreplychildren(long replyid) {
 // todo auto-generated method stub
 list<bschannelpostreply> listchildren=dao.getmainreplychildren(replyid);//根據當前的replayid獲取當前級子評論列表
 if(listchildren.size()>=0){
 for (bschannelpostreply bschannelpostreply : listchildren) {
  bschannelpostreply.setchildren(getmainreplychildren(bschannelpostreply.getreplyid()));//在判斷當前子評論是否還有子評論,遞歸調用,直到沒有子評論
 }
 }
 return listchildren;
}

五:效果

根據這樣的遞歸調用就可以實現理論上的獲取無極限的子評論列表。

java利用遞歸調用實現樹形菜單的樣式

慎用java遞歸調用

 在java語言中,使用遞歸調用時,如果過多的調用容易造成java.lang.stackoverflowerror即棧溢出和程序執行過慢。這是一個潛在bug和影響程序執行效率問題,需要謹慎使用。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://www.cnblogs.com/GH0522/p/9685646.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品久久久久久久久久香蕉 | 色姑娘导航 | 精品无人乱码一区二区三区 | 91香蕉官网| 国产在线观看福利片 | 欧美一区二区三区免费不卡 | 高清欧美videossexo免费 | x8x8国产在线观看2021 | 色综合视频一区二区三区 | 国产三区二区 | 亚欧有色在线观看免费版高清 | 精品国产精品国产偷麻豆 | 国产精品久久久精品日日 | 天美蜜桃精东乌鸦传媒 | 国产精品刺激好大好爽视频 | 日本中文字幕在线精品 | 午夜成私人影院在线观看 | 肉大捧一进一出视频免费播放 | 日本在线国产 | 日韩精品一区二区三区视频 | 精品国产在天天线在线麻豆 | 午夜神器老司机高清无码 | 色综合视频在线 | 精品在线99 | 成人精品 | 高清欧美videossexo免费 | 国产一区二区免费在线 | 日本一区二区精品88 | 欧美女人p| 亚洲区精品久久一区二区三区 | 婷婷色天使在线视频观看 | 四虎最新免费观看网址 | 日韩手机在线视频 | 欧美一级裸片又黄又裸 | 性鸥美 | 亚洲mm色国产网站 | 亚洲一区二区三区福利在线 | 国内久久精品 | 暖暖在线日本 | 精品日韩欧美一区二区三区在线播放 | 操尼姑 |