亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

java編程兩種樹形菜單結構的轉換代碼

2024-07-13 10:14:18
字體:
來源:轉載
供稿:網友

首先看看兩種樹形菜單結構的代碼示例。

SingleTreeNode:

java;">package com.zzj.tree;public class SingleTreeNode {	private int id;	private int pId;	private String name;	public SingleTreeNode() {	}	public SingleTreeNode(int id, int pId, String name) {		this.id = id;		this.pId = pId;		this.name = name;	}	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public int getpId() {		return pId;	}	public void setpId(int pId) {		this.pId = pId;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	@Override 	  public String toString() {		return "SingleTreeNode [id=" + id + ", pId=" + pId + ", name=" + name + "]";	}}

這種結構很適合存儲到關系型數據庫中。

MultiTreeNode:

package com.zzj.tree;import java.util.List;public class MultiTreeNode {	private int id;	private String name;	private List<MultiTreeNode> children;	public MultiTreeNode() {	}	public MultiTreeNode(int id, String name) {		this.id = id;		this.name = name;	}	public MultiTreeNode(int id, String name, List<MultiTreeNode> children) {		this.id = id;		this.name = name;		this.children = children;	}	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public List<MultiTreeNode> getChildren() {		return children;	}	public void setChildren(List<MultiTreeNode> children) {		this.children = children;	}	@Override 	  public String toString() {		return "MultiTreeNode [id=" + id + ", name=" + name + ", children=" + children + "]";	}}

兩種轉換器

ToMultiTreeTransformer:

package com.zzj.tree;import java.util.ArrayList;import java.util.List;public class ToMultiTreeTransformer {	private List<SingleTreeNode> singleTreeNodes;	private List<MultiTreeNode> multiTreeNodes = new ArrayList<>();	public ToMultiTreeTransformer(List<SingleTreeNode> singleTreeNodes) {		this.singleTreeNodes = singleTreeNodes;	}	public List<MultiTreeNode> transform(){		// 先找出所有的根節點 		for (int i = 0; i < singleTreeNodes.size(); i++) {			SingleTreeNode singleTreeNode = singleTreeNodes.get(i);			Boolean isRoot = true;			for (int j = 0; j < singleTreeNodes.size(); j++) {				SingleTreeNode temp = singleTreeNodes.get(j);				if (singleTreeNode.getpId() == temp.getId()) {					isRoot = false;					break;				}			}			if (isRoot) {				MultiTreeNode multiTreeNode = new MultiTreeNode(singleTreeNode.getId(),  				            singleTreeNode.getName());				multiTreeNodes.add(multiTreeNode);			}		}		// 設置子節點 		for (int i = 0; i < multiTreeNodes.size(); i++) {			MultiTreeNode multiTreeNode = multiTreeNodes.get(i);			setChildren(multiTreeNode);		}		return multiTreeNodes;	}	/**    * 設置子節點    * @param multiTreeNode    */	private void setChildren(MultiTreeNode multiTreeNode){		for (int j = 0; j < singleTreeNodes.size(); j++) {			SingleTreeNode temp = singleTreeNodes.get(j);			if (temp.getpId() == multiTreeNode.getId()) {				MultiTreeNode child = new MultiTreeNode(temp.getId(),  				            temp.getName());				List<MultiTreeNode> children = multiTreeNode.getChildren();				if (children == null) {					children = new ArrayList<>();					multiTreeNode.setChildren(children);				}				children.add(child);				setChildren(child);			}		}	}}

ToSingleTreeTransformer:

package com.zzj.tree;import java.util.ArrayList;import java.util.List;public class ToSingleTreeTransformer {	private List<MultiTreeNode> multiTreeNodes;	private List<SingleTreeNode> singleTreeNodes = new ArrayList<>();	public ToSingleTreeTransformer(List<MultiTreeNode> multiTreeNodes) {		this.multiTreeNodes = multiTreeNodes;	}	public List<SingleTreeNode> transform(){		// 先獲取根節點 		for (int i = 0; i < multiTreeNodes.size(); i++) {			MultiTreeNode multiTreeNode = multiTreeNodes.get(i);			SingleTreeNode singleTreeNode = new SingleTreeNode(multiTreeNode.getId(),  			          0, multiTreeNode.getName());			singleTreeNodes.add(singleTreeNode);		}		// 獲取子節點 		for (int i = 0; i < multiTreeNodes.size(); i++) {			MultiTreeNode multiTreeNode = multiTreeNodes.get(i);			getChildren(multiTreeNode);		}		return singleTreeNodes;	}	/**    * 獲取子節點    * @param multiTreeNode    */	private void getChildren(MultiTreeNode multiTreeNode){		for (int i = 0; i < singleTreeNodes.size(); i++) {			SingleTreeNode temp = singleTreeNodes.get(i);			if (multiTreeNode.getId() == temp.getId()) {				List<MultiTreeNode> children = multiTreeNode.getChildren();				if (children != null) {					for (int j = 0; j < children.size(); j++) {						MultiTreeNode child = children.get(j);						SingleTreeNode singleTreeNode = new SingleTreeNode(child.getId(),  						                multiTreeNode.getId(), child.getName());						singleTreeNodes.add(singleTreeNode);						getChildren(child);					}				}			}		}	}}

測試

package com.zzj.tree;import java.util.ArrayList;import java.util.List;public class TreeTransformerTest {	private final static List<SingleTreeNode> SINGLE_TREE = new ArrayList<SingleTreeNode>();	static {		SingleTreeNode China = new SingleTreeNode(1, 0, "中國");		SINGLE_TREE.add(China);		SingleTreeNode Hunan = new SingleTreeNode(2, 1, "湖南");		SINGLE_TREE.add(Hunan);		SingleTreeNode Changsha = new SingleTreeNode(3, 2, "長沙");		SINGLE_TREE.add(Changsha);		SingleTreeNode Hubei = new SingleTreeNode(4, 1, "湖北");		SINGLE_TREE.add(Hubei);		SingleTreeNode Wuhan = new SingleTreeNode(5, 4, "武漢");		SINGLE_TREE.add(Wuhan);		SingleTreeNode America = new SingleTreeNode(6, 0, "美國");		SINGLE_TREE.add(America);		SingleTreeNode California = new SingleTreeNode(7, 6, "加利福尼亞");		SINGLE_TREE.add(California);		SingleTreeNode LosAngeles = new SingleTreeNode(8, 7, "洛杉磯");		SINGLE_TREE.add(LosAngeles);	}	public static void main(String[] args) throws Exception {		ToMultiTreeTransformer multiTreeTransformer = new ToMultiTreeTransformer(SINGLE_TREE);		List<MultiTreeNode> multiTreeNodes = multiTreeTransformer.transform();		System.out.println(multiTreeNodes);		ToSingleTreeTransformer singleTreeTransformer = new ToSingleTreeTransformer(multiTreeNodes);		List<SingleTreeNode> singleTreeNodes = singleTreeTransformer.transform();		System.out.println(singleTreeNodes);	}}

輸出結果:

[MultiTreeNode [id=1, name=中國, children=[MultiTreeNode [id=2, name=湖南, children=[MultiTreeNode [id=3, name=長沙, children=null]]], MultiTreeNode [id=4, name=湖北, children=[MultiTreeNode [id=5, name=武漢, children=null]]]]], MultiTreeNode [id=6, name=美國, children=[MultiTreeNode [id=7, name=加利福尼亞, children=[MultiTreeNode [id=8, name=洛杉磯, children=null]]]]]] [SingleTreeNode [id=1, pId=0, name=中國], SingleTreeNode [id=6, pId=0, name=美國], SingleTreeNode [id=2, pId=1, name=湖南], SingleTreeNode [id=3, pId=2, name=長沙], SingleTreeNode [id=4, pId=1, name=湖北], SingleTreeNode [id=5, pId=4, name=武漢], SingleTreeNode [id=7, pId=6, name=加利福尼亞], SingleTreeNode [id=8, pId=7, name=洛杉磯]] 

總結

以上就是本文關于java編程兩種樹形菜單結構的轉換代碼的全部內容,希望對大家有所幫助。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲jizzjizz日本少妇| 亚洲精品国产精品国自产观看浪潮| 97人人模人人爽人人喊中文字| 欧美在线一级视频| 亚洲第一区中文99精品| 国产欧美一区二区三区四区| 国产亚洲欧美另类中文| 日韩69视频在线观看| 欧美亚洲国产日本| 日本高清不卡在线| 中文字幕欧美精品在线| 欧美在线视频一区| 亚洲美女精品久久| 国内自拍欧美激情| 日韩av不卡在线| 日韩极品精品视频免费观看| 日韩男女性生活视频| 91精品视频在线看| 欧美午夜精品在线| 狠狠躁夜夜躁人人爽天天天天97| 亚洲免费福利视频| 亚洲日韩中文字幕在线播放| 日韩欧美中文在线| 欧美乱人伦中文字幕在线| 久久99亚洲热视| 人人澡人人澡人人看欧美| 国产欧美一区二区三区四区| 91在线精品视频| 欧美黑人狂野猛交老妇| 国产精品视频公开费视频| 欧美精品电影免费在线观看| 日韩在线免费观看视频| 性金发美女69hd大尺寸| 国产小视频国产精品| 欧美极度另类性三渗透| 日韩欧美在线看| 国产精品自产拍在线观看| 亚洲精品美女网站| 欧美日韩亚洲国产一区| 亚洲精品视频在线播放| 色先锋久久影院av| 欧美做受高潮电影o| 国产精品草莓在线免费观看| 国产精品无av码在线观看| 国产精品久久久久久久午夜| 成人国产精品日本在线| 国产精品欧美一区二区| 亚洲欧美日韩一区在线| 色伦专区97中文字幕| 亚洲精品视频免费在线观看| 亚洲国产日韩一区| 中文字幕一区二区精品| 最新亚洲国产精品| 欧美亚洲伦理www| 国产精品久久久久久久久久三级| 中文字幕在线视频日韩| 亚洲精品资源在线| 国产一区二区三区在线免费观看| 欧美性猛交视频| 欧美日韩黄色大片| 亚洲国产精品久久91精品| 国产欧美一区二区三区久久人妖| 亚洲第一精品夜夜躁人人躁| 97香蕉超级碰碰久久免费的优势| 亚洲va久久久噜噜噜| 在线观看免费高清视频97| 午夜精品一区二区三区在线播放| 国产噜噜噜噜久久久久久久久| 久久精品国产v日韩v亚洲| 亚洲一区二区三区四区在线播放| 久久夜色精品国产亚洲aⅴ| 亚洲欧美激情精品一区二区| 日本视频久久久| 久久激情五月丁香伊人| 亚洲成人av资源网| 欧美一级电影免费在线观看| 国内伊人久久久久久网站视频| 国产精品嫩草影院一区二区| 亚洲视频一区二区| 欧美成人自拍视频| 亚洲理论在线a中文字幕| 亚洲曰本av电影| 精品久久久久久亚洲精品| 中文字幕日韩精品在线| 欧美专区在线播放| 亚洲free性xxxx护士hd| 国产亚洲精品91在线| 久久久久久999| 98精品国产高清在线xxxx天堂| 欧美裸体男粗大视频在线观看| 国产91精品久久久久| 亚洲欧美一区二区激情| 亚洲自拍欧美另类| 国产精品igao视频| 国产精品aaa| 成人激情视频网| 成人黄色免费网站在线观看| 亚洲精品国产成人| 亚洲天天在线日亚洲洲精| 欧美视频在线观看免费网址| 青青久久av北条麻妃黑人| 欧美高清不卡在线| 亚洲欧洲成视频免费观看| 欧美另类暴力丝袜| 亚洲高清久久网| 日本成人免费在线| 欧美成年人视频网站欧美| 国产欧美一区二区三区久久人妖| 91成人天堂久久成人| 精品亚洲一区二区三区在线播放| 中文字幕欧美国内| 亚洲直播在线一区| 亚洲精品久久久久久久久久久久| 欧美午夜影院在线视频| 欧美性xxxx极品高清hd直播| 日韩美女在线观看| 在线观看中文字幕亚洲| 亚洲欧美另类在线观看| 亚洲精品久久久久久久久久久久久| 日韩精品中文字幕久久臀| 91精品视频专区| 亚洲丁香婷深爱综合| **欧美日韩vr在线| 国产精品香蕉国产| 亚洲欧洲偷拍精品| 国产日韩在线亚洲字幕中文| 亚洲视频电影图片偷拍一区| 精品无人国产偷自产在线| 日韩在线不卡视频| 欧美激情2020午夜免费观看| 欧美色视频日本高清在线观看| 亚洲欧美日韩国产中文专区| 国产精品成人v| 国产精品福利久久久| 久久中文久久字幕| 亚洲美女中文字幕| 国内免费精品永久在线视频| 国产精品伦子伦免费视频| 国产精品第10页| 欧美在线视频免费播放| 26uuu亚洲国产精品| 国产剧情久久久久久| 亚洲人成电影在线观看天堂色| 国产精品久久久久91| 日韩在线欧美在线| 国产做受高潮69| 国产精品白丝av嫩草影院| 国产一区二区三区丝袜| 亚洲欧洲在线视频| 国产成人在线播放| 日韩在线视频观看正片免费网站| 亚洲aⅴ男人的天堂在线观看| 久久久噜噜噜久久中文字免| 国产精品久久久久久久久久尿| 成人性生交大片免费观看嘿嘿视频| 欧美精品在线免费观看| 欧美精品一区二区三区国产精品| 欧美一级高清免费| 日韩精品免费视频| 欧美成人一二三| 日韩av三级在线观看| 欧美高清电影在线看| 国产精品免费久久久| 亚洲国产精品中文|