首先,想清楚目的,需要的是只是單純的實現選單功能,還是選單下可以有檔案的那種實戰開發中需要用到的選單(即選單下可以有選單還可以有檔案)
如果只是想要單純的實現選單,不需要有檔案那麼這種方式相對較為簡單
1、建目錄表,表中應有以下關鍵字段
2、建立目錄(這個功能就是向資料庫表中插入資料,沒什麼好說的,注意需要同名判斷)
3、獲取目錄樹結構
思路:從資料庫中獲取所有的目錄節點物件,設定根目錄,判斷此字段的父id是否為根目錄,然後遞迴
/**
* 獲取目錄樹結構
* @return
*/public datasetdirectory getdir()
return rootdir;
}/**
* 獲取目錄子節點
** @param datasetdirectories
* @param parentid
* @return
*/public listgetchildrendir(listdatasetdirectories, string parentid)
if (objects.equals(datasetdirectory.getsupid(), parentid))
}return result;
}
這樣就簡單的實現了獲取多層級目錄的功能
如果想要實現可以正常使用的多層級選單,選單下有選單還可以有檔案的那種,就要稍微複雜點,具體實現如下:
1、想要實現這種方式,就肯定要有乙個目錄檔案類,既包含了目錄又包含了檔案,**如下:
public class datatree
列舉類如下:
public enum datatreetype
目錄類如下:
public class datasetdirectory
檔案類就不列舉出來了,記得有個關鍵性欄位為所在目錄id(dirid),其他的無關緊要。
思路:想查詢出目錄又想查詢出檔案,而且我有了乙個目錄檔案類,那麼我就需要把目錄和選單都裝進這個類裡面去,目錄和檔案都裝進去之後返回這個物件也就可以得到目錄樹和資料集結構
正式邏輯:
1、首先需要獲取指定目錄下的資料集吧(資料集即檔案),方法如下:
/**
* 獲取目錄樹下的資料集
** @param datatree
* @return
*/public listgetchildrendataset(datatree datatree)
datatree child = new datatree();
child.setparentid(datatree.gettreeid());
child.settreeid(dataset.getdirid());
child.settreename(dataset.getdatasetname());
child.setdatatreetype(datatreetype.file);
datatreelit.add(child);
}return datatreelit;
}
2、有了目錄下的資料集,還需要獲取目錄和目錄下的資料集(資料集即檔案)
/**
* 獲取資料集和目錄子節點
** @param datasetdirectories 所有的目錄節點物件
* @param parentid 父目錄id
* @return
*/public listgetchildrendatatree(listdatasetdirectories, string parentid)
if (null != childrendataset && childrendataset.size() > 0)
datatree.setchildren(children);
result.add(datatree);}}
return result;
}
3、啥都有了,直接獲取目錄樹和資料集結構
/**
* 獲取目錄樹及其資料集
* @return
*/public listgetdatatree()
//有些人不喜歡建目錄直接建檔案,這時候就可能會有這種情況,根目錄為0
if (null != rootdataset && rootdataset.size() > 0)
}return datatreelist;
}
以上。 紅黑樹的java實現
紅黑樹的原理以及演算法見文章 紅黑樹的節點定義 package org.algorithm.redblacktree created with intellij idea.user qarkly date 14 6 8 time 下午11 16 to change this template use...
Trie(字典樹)的Java實現
簡單實現了乙個具有crud操作能力的trie。crud操作即插入 create 讀取 read 改變 update 和刪除 delete 刪除是基於當前結點的count實現的。當count為0時代表當前結點應該被完全刪除。trie的所有操作均為o n 其中n為所要操作的單詞的長度。public ke...
紅黑樹的Java實現
紅黑樹 red black tree,簡稱rb樹 是一種特殊的二叉查詢樹,所以他也滿足二叉查詢樹的特徵 任意乙個節點的值大於右子節點的鍵值,小於左子節點的鍵值。除此之外,紅黑樹還具備很多其他特徵 1 每個節點都是紅色或者黑色 2 根節點必定為黑色 3 每個葉節點 左右子節點都為null的節點 必定是...