您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么在java中使用遞歸調用實現一個樹形菜單,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
實體類:
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;//下面的子評論 }
獲取主評論列表,和遞歸全部子評論:
@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.lang.StackOverflowError
即棧溢出和程序執行過慢。這是一個潛在Bug和影響程序執行效率問題,需要謹慎使用。
關于怎么在java中使用遞歸調用實現一個樹形菜單就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。