單表 `menu`:id, name, pid(`pid=0` 為一級,`pid=父id` 為二級)。查出 `List
id, name, pid
<s:iterator value="allMenus" var="parent"> <s:if test="%{#parent.pid == 0}"> <div class="menu-group"> <h3><s:property value="#parent.name"/></h3> <ul> <s:iterator value="allMenus" var="child"> <s:if test="%{#child.pid == #parent.id}"> <li><a href="<s:property value='#child.url'/>"><s:property value="#child.name"/></a></li> </s:if> </s:iterator> </ul> </div> </s:if> </s:iterator>
// Service List roots = menuDao.findByPid(0); for (Menu root : roots) { root.setChildren(menuDao.findByPid(root.getId())); } return roots; // JSP 只需單層迭代 roots -> children
<c:forEach items="${menus}" var="parent"> <c:if test="${parent.pid == 0}"> <h3>${parent.name}</h3> <ul> <c:forEach items="${menus}" var="child"> <c:if test="${child.pid == parent.id}"> <li><a href="${child.url}">${child.name}</a></li> </c:if> </c:forEach> </ul> </c:if> </c:forEach>
雙層迭代 `O(n²)` 簡單可行(菜單通常 < 100 條),大數據量建議后端構建樹結構降為 `O(n)` 渲染。
現象 在輸出函數中加入 \n 後,預期從 i=1 開始輸出,
問題現象 每次點擊「選擇」按鈕都 `new AlertDia
需求背景 在 iOS App 中實現類似「表情工廠」的實時人
問題背景 在 DEV-C++ 環境下編譯運行以下尋找三位數水