當前位置:首頁 » 存儲配置 » java樹形結構存儲

java樹形結構存儲

發布時間: 2023-08-07 12:55:22

java中有沒有現成的樹形結構的類

樹時用來存儲東西的,如果非要說類似的類,那麼應該是treemap和treeset應該是使用的avl平衡二叉樹實現的。其他的,好像暫時沒有發現。正常演算法使用的樹,都是用的node裡面存放引用來實現的。

⑵ java面試題:說如何將20萬條數據放到一個樹裡面。 這個樹形結構如何存儲。請問如何回答

存入文本文件,每行:孩子節點-父節點。
這樣也方便用Hadoop進行處理。

⑶ java用什麼存儲樹形結構的數據啊 尤其是多重樹形結構

//將樓上的,稍改一下,添加一個

public class TreeNode {

/**節點主鍵**/
private String id;
/**節點名稱**/
private String text;

private Long itemType; //區別 章節--要點--階段--問題

/**子節點**/
private TreeNode[] children;
}

⑷ java從資料庫中查詢數據,存儲為樹形結構,怎麼做

以前用dtree寫過一個,先把你資料庫數據查出來,重點是確定父id跟子id都已經分好了,然後剩下的主要是在jsp里寫樹菜單就好了:給你參考下,下面那兩個文件你可能沒有,不過應該可以在網上下載的

<div class="dtree">

<p><a href="javascript: d.openAll();">展開</a> | <a href="javascript: d.closeAll();">關閉</a></p>

<script type="text/javascript">

d = new dTree('d',"${contextPath}/js/dtree/");

d.add(0,-1,'涉及問題選擇');

<c:forEach items="${problemList}" var="pro">

var fid;

var config="${pro.content}";

fid = '${pro.fid}';

var id = '${pro.id}';

if(${pro.son}==0){

ss='+config,'${pro.content}','frame_right');

d.add('${pro.id}',fid,config,'${contextPath}/ajdj/ajdj_sjwtLj.do?config.id='+id,'${pro.content}','frame_right');

}else{

d.add('${pro.id}',fid,config,'','${pro.content}','frame_right');

}

</c:forEach>

document.write(d);

</script>

</div>

⑸ 如何用Java實現樹形結構啊

定義一個簡單的菜單類 這里是簡單的示例 你可以自行擴展package entity;import java.util.ArrayList;
import java.util.List;/**
* 菜單類
* @author Administrator
*
*/
public class Menu {
/**
* 菜單標題
*/
private String title;
/**
* 子菜單的集合
*/
private List<Menu> childs;

/**
* 父菜單
*/
private Menu parent;

/**
* 構造函數 初始化標題和子菜單集合
*/
public Menu(String title) {
this();
this.title=title;
}
/**
* 構造函數 創建一個虛擬的父菜單(零級菜單) 所有的一級菜單都歸屬於一個虛擬的零級菜單
*
*/
public Menu() {
this.childs = new ArrayList<Menu>();
}
/**
* 獲取子菜單
* @return
*/
public List<Menu> getChilds() {
return childs;
}
/**
* 獲取標題
* @return
*/
public String getTitle() {
return title;
}
/**
* 獲取父菜單
* @return
*/
public Menu getParent() {
return parent;
}
/**
* 添加子菜單並返回該子菜單對象
* @param child
* @return
*/
public Menu addChild(Menu child){
this.childs.add(child);
return child;
}
/**
* 設置父菜單
* @param parent
*/
public void setParent(Menu parent) {
this.parent = parent;
}
/**
* 設置標題
* @param title
*/
public void setTitle(String title) {
this.title = title;
}
} 測試package entity;
/**
* 測試類
* @author Administrator
*
*/
public class Test { /**
* @param args
*/
public static void main(String[] args) {
/**
* 創建一個虛擬的父菜單 用於存放一級菜單 menu01 和 menu02
*/
Menu root = new Menu();
/**
* 創建兩個一級菜單
*/
Menu menu01 = new Menu("一級菜單01");
Menu menu02 = new Menu("一級菜單02");
/**
* 加入虛擬菜單
*/
root.addChild(menu01);
root.addChild(menu02);
/**
* 為兩個一級菜單分別添加兩個子菜單 並返回該子菜單 需要進一步處理的時候 才接收返回的對象 否則只要調用方法
*/
Menu menu0101 = menu01.addChild(new Menu("二級菜單0101"));
menu01.addChild(new Menu("二級菜單0102"));
menu02.addChild(new Menu("二級菜單0201"));
Menu menu0202 = menu02.addChild(new Menu("二級菜單0202"));
/**
* 添加三級菜單
*/
menu0101.addChild(new Menu("三級菜單010101"));
menu0202.addChild(new Menu("三級菜單020201"));
/**
* 列印樹形結構
*/
showMenu(root);
} /**
* 遞歸遍歷某個菜單下的菜單樹
*
* @param menu
* 根菜單
*/
private static void showMenu(Menu menu) {
for (Menu child : menu.getChilds()) {
showMenu(child, 0);
}
} private static void showMenu(Menu menu, int tabNum) {
for (int i = 0; i < tabNum; i++)
System.out.print("\t");
System.out.println(menu.getTitle());
for (Menu child : menu.getChilds())
// 遞歸調用
showMenu(child, tabNum + 1);
}}
控制台輸出結果 一級菜單01 二級菜單0101
三級菜單010101
二級菜單0102一級菜單02
二級菜單0201
二級菜單0202
三級菜單020201

⑹ java 遞歸資料庫生成 樹形結構問題

1、准備表結構及對應的表數據
a、表結構:
create table TB_TREE
(
CID NUMBER not null,
CNAME VARCHAR2(50),
PID NUMBER //父節點
)

b、表數據:

insert into tb_tree (CID, CNAME, PID) values (1, '中國', 0);
insert into tb_tree (CID, CNAME, PID) values (2, '北京市', 1);
insert into tb_tree (CID, CNAME, PID) values (3, '廣東省', 1);
insert into tb_tree (CID, CNAME, PID) values (4, '上海市', 1);
insert into tb_tree (CID, CNAME, PID) values (5, '廣州市', 3);
insert into tb_tree (CID, CNAME, PID) values (6, '深圳市', 3);
insert into tb_tree (CID, CNAME, PID) values (7, '海珠區', 5);
insert into tb_tree (CID, CNAME, PID) values (8, '天河區', 5);
insert into tb_tree (CID, CNAME, PID) values (9, '福田區', 6);
insert into tb_tree (CID, CNAME, PID) values (10, '南山區', 6);
insert into tb_tree (CID, CNAME, PID) values (11, '密雲縣', 2);
insert into tb_tree (CID, CNAME, PID) values (12, '浦東', 4);

2、TreeNode對象,對應tb_tree

public class TreeNode implements Serializable {
private Integer cid;
private String cname;
private Integer pid;
private List nodes = new ArrayList();

public TreeNode() {
}

//getter、setter省略
}

3、測試數據

public class TreeNodeTest {
@Test
public void loadTree() throws Exception{
System.out.println(JsonUtils.javaToJson(recursiveTree(1)));
}

/**
* 遞歸演算法解析成樹形結構
*
* @param cid
* @return
* @author jiqinlin
*/
public TreeNode recursiveTree(int cid) {
//根據cid獲取節點對象(SELECT * FROM tb_tree t WHERE t.cid=?)
TreeNode node = personService.getreeNode(cid);
//查詢cid下的所有子節點(SELECT * FROM tb_tree t WHERE t.pid=?)
List childTreeNodes = personService.queryTreeNode(cid);
//遍歷子節點
for(TreeNode child : childTreeNodes){
TreeNode n = recursiveTree(child.getCid()); //遞歸
node.getNodes().add(n);
}

return node;
}
}

輸出的json格式如下:

{
"cid": 1,
"nodes": [
{
"cid": 2,
"nodes": [
{
"cid": 11,
"nodes": [

],
"cname": "密雲縣",
"pid": 2
}
],
"cname": "北京市",
"pid": 1
},
{
"cid": 3,
"nodes": [
{
"cid": 5,
"nodes": [
{
"cid": 7,
"nodes": [

],
"cname": "海珠區",
"pid": 5
},
{
"cid": 8,
"nodes": [

],
"cname": "天河區",
"pid": 5
}
],
"cname": "廣州市",
"pid": 3
},
{
"cid": 6,
"nodes": [
{
"cid": 9,
"nodes": [

],
"cname": "福田區",
"pid": 6
},
{
"cid": 10,
"nodes": [

],
"cname": "南山區",
"pid": 6
}
],
"cname": "深圳市",
"pid": 3
}
],
"cname": "廣東省",
"pid": 1
},
{
"cid": 4,
"nodes": [
{
"cid": 12,
"nodes": [

],
"cname": "浦東",
"pid": 4
}
],
"cname": "上海市",
"pid": 1
}
],
"cname": "中國",
"pid": 0
}

熱點內容
android獲取應用版本 發布:2025-02-02 05:54:19 瀏覽:745
pythonif比較 發布:2025-02-02 05:24:03 瀏覽:259
已連接的無線網如何知道密碼 發布:2025-02-02 04:53:51 瀏覽:634
android編程入門經典pdf 發布:2025-02-02 04:46:19 瀏覽:57
安卓什麼軟體測試手機電池 發布:2025-02-02 04:28:52 瀏覽:996
手機上傳快 發布:2025-02-02 04:27:46 瀏覽:308
電腦配置詳解圖解都有哪些 發布:2025-02-02 04:26:27 瀏覽:716
景區應該有什麼配置 發布:2025-02-02 04:09:08 瀏覽:120
c語言與java工作 發布:2025-02-02 03:59:57 瀏覽:283
qq買什麼不要支付密碼 發布:2025-02-02 03:50:29 瀏覽:497