1、利用情境
組織機構樹,通常會有組織機構表,其中有code(代碼),pcode(上級代碼),name(組織名稱)等欄位
2、建構資料(以下資料並非組織機構數據,而純屬本人胡編亂造的數據)
List<Tree<Test>> trees = new ArrayList<Tree<Test>>(); tests.add(new Test("0", "", "关于本人")); tests.add(new Test("1", "0", "技术学习")); tests.add(new Test("2", "0", "兴趣")); tests.add(new Test("3", "1", "JAVA")); tests.add(new Test("4", "1", "oracle")); tests.add(new Test("5", "1", "spring")); tests.add(new Test("6", "1", "springmvc")); tests.add(new Test("7", "1", "fastdfs")); tests.add(new Test("8", "1", "linux")); tests.add(new Test("9", "2", "骑行")); tests.add(new Test("10", "2", "吃喝玩乐")); tests.add(new Test("11", "2", "学习")); tests.add(new Test("12", "3", "String")); tests.add(new Test("13", "4", "sql")); tests.add(new Test("14", "5", "ioc")); tests.add(new Test("15", "5", "aop")); tests.add(new Test("16", "1", "等等")); tests.add(new Test("17", "2", "等等")); tests.add(new Test("18", "3", "等等")); tests.add(new Test("19", "4", "等等")); tests.add(new Test("20", "5", "等等"));
3、源碼
Tree.java
package pers.kangxu.datautils.bean.tree; import java.util.ArrayList; import java.util.List; import java.util.Map; import com.alibaba.fastjson.JSON; /** * tree TODO <br> * * @author kangxu2 2017-1-7 * */ public class Tree<T> { /** * 节点ID */ private String id; /** * 显示节点文本 */ private String text; /** * 节点状态,open closed */ private String state = "open"; /** * 节点是否被选中 true false */ private boolean checked = false; /** * 节点属性 */ private List<Map<String, Object>> attributes; /** * 节点的子节点 */ private List<Tree<T>> children = new ArrayList<Tree<T>>(); /** * 父ID */ private String parentId; /** * 是否有父节点 */ private boolean isParent = false; /** * 是否有子节点 */ private boolean isChildren = false; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getText() { return text; } public void setText(String text) { this.text = text; } public String getState() { return state; } public void setState(String state) { this.state = state; } public boolean isChecked() { return checked; } public void setChecked(boolean checked) { this.checked = checked; } public List<Map<String, Object>> getAttributes() { return attributes; } public void setAttributes(List<Map<String, Object>> attributes) { this.attributes = attributes; } public List<Tree<T>> getChildren() { return children; } public void setChildren(List<Tree<T>> children) { this.children = children; } public boolean isParent() { return isParent; } public void setParent(boolean isParent) { this.isParent = isParent; } public boolean isChildren() { return isChildren; } public void setChildren(boolean isChildren) { this.isChildren = isChildren; } public String getParentId() { return parentId; } public void setParentId(String parentId) { this.parentId = parentId; } public Tree(String id, String text, String state, boolean checked, List<Map<String, Object>> attributes, List<Tree<T>> children, boolean isParent, boolean isChildren, String parentID) { super(); this.id = id; this.text = text; this.state = state; this.checked = checked; this.attributes = attributes; this.children = children; this.isParent = isParent; this.isChildren = isChildren; this.parentId = parentID; } public Tree() { super(); } @Override public String toString() { return JSON.toJSONString(this); } }
BuildTreeTester.java
package pers.kangxu.datautils.common.tree; import java.util.ArrayList; import java.util.List; import pers.kangxu.datautils.bean.tree.Tree; /** * 构建tree * TODO * <br> * @author kangxu2 2017-1-7 * */ public class BuildTree { /** * * TODO * <br> * @author kangxu2 2017-1-7 * * @param nodes * @return */ public static <T> Tree<T> build(List<Tree<T>> nodes) { if(nodes == null){ return null; } List<Tree<T>> topNodes = new ArrayList<Tree<T>>(); for (Tree<T> children : nodes) { String pid = children.getParentId(); if (pid == null || "".equals(pid)) { topNodes.add(children); continue; } for (Tree<T> parent : nodes) { String id = parent.getId(); if (id != null && id.equals(pid)) { parent.getChildren().add(children); children.setParent(true); parent.setChildren(true); continue; } } } Tree<T> root = new Tree<T>(); if (topNodes.size() == 0) { root = topNodes.get(0); } else { root.setId("-1"); root.setParentId(""); root.setParent(false); root.setChildren(true); root.setChecked(true); root.setChildren(topNodes); root.setText("顶级节点"); } return root; } }4、運行結果JSON資料:
package pers.kangxu.datautils.test; import java.util.ArrayList; import java.util.List; import pers.kangxu.datautils.bean.tree.Tree; import pers.kangxu.datautils.common.tree.BuildTree; public class BuildTreeTester { public static void main(String[] args) { List<Tree<Test>> trees = new ArrayList<Tree<Test>>(); List<Test> tests = new ArrayList<Test>(); tests.add(new Test("0", "", "关于本人")); tests.add(new Test("1", "0", "技术学习")); tests.add(new Test("2", "0", "兴趣")); tests.add(new Test("3", "1", "JAVA")); tests.add(new Test("4", "1", "oracle")); tests.add(new Test("5", "1", "spring")); tests.add(new Test("6", "1", "springmvc")); tests.add(new Test("7", "1", "fastdfs")); tests.add(new Test("8", "1", "linux")); tests.add(new Test("9", "2", "骑行")); tests.add(new Test("10", "2", "吃喝玩乐")); tests.add(new Test("11", "2", "学习")); tests.add(new Test("12", "3", "String")); tests.add(new Test("13", "4", "sql")); tests.add(new Test("14", "5", "ioc")); tests.add(new Test("15", "5", "aop")); tests.add(new Test("16", "1", "等等")); tests.add(new Test("17", "2", "等等")); tests.add(new Test("18", "3", "等等")); tests.add(new Test("19", "4", "等等")); tests.add(new Test("20", "5", "等等")); for (Test test : tests) { Tree<Test> tree = new Tree<Test>(); tree.setId(test.getId()); tree.setParentId(test.getPid()); tree.setText(test.getText()); trees.add(tree); } Tree<Test> t = BuildTree.build(trees); System.out.println(t); } } class Test { private String id; private String pid; private String text; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPid() { return pid; } public void setPid(String pid) { this.pid = pid; } public String getText() { return text; } public void setText(String text) { this.text = text; } public Test(String id, String pid, String text) { super(); this.id = id; this.pid = pid; this.text = text; } public Test() { super(); } @Override public String toString() { return "Test [id=" + id + ", pid=" + pid + ", text=" + text + "]"; } }更多JAVA 根據資料庫表內容生產樹結構JSON資料的實例代碼相關文章請關注PHPPHP!

ByteCodeachievesPlatFormIndenceByByByByByByExecutedBoviratualMachine(VM),允許CodetorunonanyplatformwithTheApprepreprepvm.Forexample,Javabytecodecodecodecodecanrunonanydevicewithajvm

Java不能做到100%的平台獨立性,但其平台獨立性通過JVM和字節碼實現,確保代碼在不同平台上運行。具體實現包括:1.編譯成字節碼;2.JVM的解釋執行;3.標準庫的一致性。然而,JVM實現差異、操作系統和硬件差異以及第三方庫的兼容性可能影響其平台獨立性。

Java通過“一次編寫,到處運行”實現平台獨立性,提升代碼可維護性:1.代碼重用性高,減少重複開發;2.維護成本低,只需一處修改;3.團隊協作效率高,方便知識共享。

在新平台上創建JVM面臨的主要挑戰包括硬件兼容性、操作系統兼容性和性能優化。 1.硬件兼容性:需要確保JVM能正確使用新平台的處理器指令集,如RISC-V。 2.操作系統兼容性:JVM需正確調用新平台的系統API,如Linux。 3.性能優化:需進行性能測試和調優,調整垃圾回收策略以適應新平台的內存特性。

javafxeffectife addressemanddressEndressencissencies uningusement insuplatform-agnosticsCenegraphandCsSsStyling.1)itabstractsplactsplatsplatsplatsplatsplatformsthroughascenegraph,確保consistentertrenderingrenderingrenderingacrosswindows,macoswindwind,Macos,MacOs.2)

JVM的工作原理是將Java代碼轉換為機器碼並管理資源。 1)類加載:加載.class文件到內存。 2)運行時數據區:管理內存區域。 3)執行引擎:解釋或編譯執行字節碼。 4)本地方法接口:通過JNI與操作系統交互。

JVM使Java實現跨平台運行。 1)JVM加載、驗證和執行字節碼。 2)JVM的工作包括類加載、字節碼驗證、解釋執行和內存管理。 3)JVM支持高級功能如動態類加載和反射。

Java應用可通過以下步驟在不同操作系統上運行:1)使用File或Paths類處理文件路徑;2)通過System.getenv()設置和獲取環境變量;3)利用Maven或Gradle管理依賴並測試。 Java的跨平台能力依賴於JVM的抽象層,但仍需手動處理某些操作系統特定的功能。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能