java樹(shù)形菜單對(duì)象生成
本文實(shí)例為大家分享了java樹(shù)形菜單對(duì)象生成的具體代碼,供大家參考,具體內(nèi)容如下
1、TreeNode對(duì)象
package com.ruoyi.system.utils.Vo;
import java.util.ArrayList;
import java.util.List;
public class TreeNode {
/**
* 節(jié)點(diǎn)ID
*/
private Integer id;
/**
* 節(jié)點(diǎn)名稱(chēng)
*/
private String name;
/**
* 父節(jié)點(diǎn)ID
*/
private Integer parentId;
/**
* 子節(jié)點(diǎn)列表
*/
private List childrenList = new ArrayList();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id=id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public Integer getParentId() {
return parentId;
}
public void setParentId(Integer parentId) {
this.parentId=parentId;
}
public List getChildrenList() {
return childrenList;
}
public void setChildrenList(List childrenList) {
this.childrenList=childrenList;
}
}
2、TreeUtil
package com.ruoyi.system.utils;
import com.ruoyi.system.utils.Vo.TreeNode;
import java.util.ArrayList;
import java.util.List;
public class TreeUtil {
private List<TreeNode> treeNodeList =new ArrayList<>();
public TreeUtil(List<TreeNode> list){
treeNodeList = list;
}
/**
* 獲取節(jié)點(diǎn)信息
* @param nodeId 節(jié)點(diǎn)ID
* @return
*/
public TreeNode getNodeById(int nodeId){
TreeNode treeNode = new TreeNode();
for (TreeNode item : treeNodeList) {
if (item.getId() == nodeId) {
treeNode = item;
break;
}
}
return treeNode;
}
/**
* 獲取子節(jié)點(diǎn)信息
* @param nodeId 節(jié)點(diǎn)ID
* @return
*/
public List<TreeNode> getChildrenNodeById(int nodeId){
List<TreeNode> childrenTreeNode = new ArrayList<TreeNode>();
for (TreeNode item : treeNodeList) {
if(item.getParentId() == nodeId){
childrenTreeNode.add(item);
}
}
return childrenTreeNode;
}
/**
* 遞歸生成Tree結(jié)構(gòu)數(shù)據(jù)
* @param rootId 根節(jié)點(diǎn)ID
* @return
*/
public TreeNode generateTreeNode(int rootId){
TreeNode root = this.getNodeById(rootId);
List<TreeNode> childrenTreeNode = this.getChildrenNodeById(rootId);
for (TreeNode item : childrenTreeNode) {
TreeNode node = this.generateTreeNode(item.getId());
root.getChildrenList().add(node);
}
return root;
}
public static void main(String[] args) {
List<TreeNode> nodeList = new ArrayList<>();
TreeNode treeNode = new TreeNode();
treeNode.setId(1);
treeNode.setName("中國(guó)");
treeNode.setParentId(0);
nodeList.add(treeNode);
treeNode = new TreeNode();
treeNode.setId(2);
treeNode.setName("北京市");
treeNode.setParentId(1);
nodeList.add(treeNode);
treeNode = new TreeNode();
treeNode.setId(3);
treeNode.setName("浙江省");
treeNode.setParentId(1);
nodeList.add(treeNode);
treeNode = new TreeNode();
treeNode.setId(4);
treeNode.setName("杭州市");
treeNode.setParentId(3);
nodeList.add(treeNode);
treeNode = new TreeNode();
treeNode.setId(5);
treeNode.setName("西湖區(qū)");
treeNode.setParentId(4);
nodeList.add(treeNode);
treeNode = new TreeNode();
treeNode.setId(6);
treeNode.setName("濱江區(qū)");
treeNode.setParentId(4);
nodeList.add(treeNode);
treeNode = new TreeNode();
treeNode.setId(7);
treeNode.setName("金華市");
treeNode.setParentId(3);
nodeList.add(treeNode);
TreeUtil treeUtil = new TreeUtil(nodeList);
treeNode = treeUtil.generateTreeNode(1);
System.out.println("樹(shù)狀結(jié)構(gòu)Json格式數(shù)據(jù):" + JsonUtils.objectToJson(treeNode, 1));
}
}
3、JsonUtil
package com.ruoyi.system.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public class JsonUtils {
// 定義jackson對(duì)象
private static final ObjectMapper MAPPER = new ObjectMapper();
/**
* 將對(duì)象轉(zhuǎn)換成json字符串
* @param obj 需轉(zhuǎn)換的對(duì)象
* @param flag Json格式化標(biāo)識(shí)(0-否,1-是)
* @return
*/
public static <T> String objectToJson(T obj, int flag) {
if (obj == null) {
return null;
}
try {
String string;
if (flag == 1) {
string = obj instanceof String ? (String) obj : MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
} else {
string = obj instanceof String ? (String) obj : MAPPER.writeValueAsString(obj);
}
return string;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
/**
* 將json結(jié)果集轉(zhuǎn)化為對(duì)象
*
* @param jsonData json數(shù)據(jù)
* @param beanType 對(duì)象中的object類(lèi)型
* @return
*/
public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
try {
T t = MAPPER.readValue(jsonData, beanType);
return t;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 將json數(shù)據(jù)轉(zhuǎn)換成pojo對(duì)象list
* <p>Title: jsonToList</p>
* <p>Description: </p>
* @param jsonData
* @param beanType
* @return
*/
public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
try {
List<T> list = MAPPER.readValue(jsonData, javaType);
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
System.out.println("測(cè)試字符串對(duì)象:" + objectToJson("hello world", 1));
}
}
4、運(yùn)行結(jié)果

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳細(xì)講解springboot如何實(shí)現(xiàn)異步任務(wù)
異步:異步與同步相對(duì),當(dāng)一個(gè)異步過(guò)程調(diào)用發(fā)出后,調(diào)用者在沒(méi)有得到結(jié)果之前,就可以繼續(xù)執(zhí)行后續(xù)操作。也就是說(shuō)無(wú)論異步方法執(zhí)行代碼需要多長(zhǎng)時(shí)間,跟主線程沒(méi)有任何影響,主線程可以繼續(xù)向下執(zhí)行2022-04-04
解決springboot利用ConfigurationProperties注解配置數(shù)據(jù)源無(wú)法讀取配置信息問(wèn)題
今天在學(xué)習(xí)springboot利用ConfigurationProperties注解配置數(shù)據(jù)源的使用遇到一個(gè)問(wèn)題無(wú)法讀取配置信息,發(fā)現(xiàn)全部為null,糾結(jié)是哪里出了問(wèn)題呢,今天一番思考,問(wèn)題根源找到,下面把我的解決方案分享到腳本之家平臺(tái),感興趣的朋友一起看看吧2021-05-05
如何通過(guò)Java實(shí)現(xiàn)修改視頻分辨率
Java除了可以修改圖片的分辨率,還可以實(shí)現(xiàn)修改視頻的分辨率,這篇文章就將帶大家學(xué)習(xí)如果編寫(xiě)這一工具類(lèi),感興趣的同學(xué)可以了解一下2021-12-12
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(31)
下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你2021-07-07
JAVA?IDEA?打開(kāi)assert?設(shè)置方式
這篇文章主要介紹了JAVA?IDEA?打開(kāi)assert?設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
idea ssm項(xiàng)目java程序使用十六進(jìn)制rxtx包向串口發(fā)送指令的方法
這篇文章主要介紹了idea ssm項(xiàng)目java程序向串口發(fā)送指令并且使用十六進(jìn)制 rxtx包,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的實(shí)例代碼
本文主要介紹了Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
Spring Boot配置接口WebMvcConfigurer的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot配置接口WebMvcConfigurer的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
HashMap實(shí)現(xiàn)保存兩個(gè)key相同的數(shù)據(jù)
這篇文章主要介紹了HashMap實(shí)現(xiàn)保存兩個(gè)key相同的數(shù)據(jù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06

