package com.cjonline.foundation.authority.pojo; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.apache.log4j.Logger; import com.cjonline.foundation.util.CheckNullEmpty; /** * 实现递归的帮助类,最终的结果可以描述成如下: * 根(root) * --1(子系统1) * -----1.1 * -------1.1.1 * -------1.1.2 * ------- .... * -----1.2 * --2(子系统2) * -----2.1 * -------2.1.1 * -------2.1.2 * ------- .... * -----2.2 */ public class ModelList implements java.io.Serializable { private static final Logger logger = Logger.getLogger(ModelList.class); private static final long serialVersionUID = 6384598893693849820L; /** * model代表当前模块 */ private SysModel model; /** * models代表当前模块下面的子模块, */ private List<ModelList> subList = new ArrayList<ModelList>(); /** * 菜单级别 */ private int flag = 0; public SysModel getModel() { return model; } public void setModel(SysModel model) { this.model = model; } public List<ModelList> getSubList() { return subList; } public void setSubList(List<ModelList> subList) { this.subList = subList; } public void setFlag(int flag) { this.flag = flag; } public int getFlag() { return flag; } /** * 递归方法根据传入的模块集合形成层级菜单 */ @SuppressWarnings("unchecked") public ModelList createTree2(List<SysModel> ms) { // ModelList node = new ModelList(); ArrayList<SysModel> fu = new ArrayList<SysModel>();// 用来存储parentId为空的父节点; ArrayList<SysModel> childs = new ArrayList<SysModel>();// 用来存储不是系统的模块 // 将系统和模块菜单分开 for (Iterator<SysModel> it = ms.iterator(); it.hasNext();) { SysModel mode = (SysModel) it.next(); String parentId = mode.getParentId(); if (parentId == null || parentId.equals("")) { fu.add(mode); } else { childs.add(mode); } } //由于是多个子系统,首先要找出有多少个子系统 for (SysModel model : fu) { ModelList node1 = new ModelList(); node1.setFlag(0); node1.setModel(model); node.subList.add(node1); appendChild(node1, childs); } return node; } /** * node节点 childs为所以系统下的子节点 */ public void appendChild(ModelList node, List<SysModel> childs) { if (node != null) { String systemId = node.getModel().getSystemId(); String smid = node.getModel().getSysModuleId(); int flag = node.getFlag(); if (childs != null && childs.size() > 0) { for (SysModel model : childs) { String systemId2 = model.getSystemId(); String parentId2 = model.getParentId(); if (systemId.equals(systemId2)) { if (parentId2.equals(smid)) { ModelList child = new ModelList(); child.setModel(model); child.setFlag(flag + 1); node.getSubList().add(child); appendChild(child, childs); } } } } } } }
Weitere Artikel zum Konvertieren rekursiver Java-Menübäume in Pojo-Objekte finden Sie auf der chinesischen PHP-Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung