你这样设计是我能接受的,因为以值得冗余换取速度的最大化
除非你愿意让father成为以符号间隔的类型
除非你愿意让father成为以符号间隔的类型
解决方案 »
- (急)java(org.json.JSONObject) 解析 json格式的问题
- 多个图片上传
- 笔记本:C1.73+1G+945PM+80G做JAVA开发够不够?我要做JSP,常用ECLIPSE+TOMCAT+ORACEL+金山 ,不知道怎么样? 请有经验者给出一点看法?
- jsp入门程序
- 页面刷新后,怎么保持下拉列表中的选项不变啊?
- 请问 1:换行符系统字符是什么? 2:“系统字符是什么? 3:”系统字符是什么?
- JSTL1.1是什么?大家不要笑我,我刚入门。
- 运行在页面上正常,但是在tomcat的监视窗里报一堆错!
- 关于servlet中 事件的监听
- 请问:如何在一个servlet中通过上下文取得另一个servlet的使用句柄,因为我想在一个servlet中使用另一个servlet的public方法
- 为什么Eclipse整合Jboss后无法启动Jboss
- 高分求救:如何解决有多个web server的session问题
3 JBuilder 1
4 JBuilder 2换成:
3 JBuilder 1,2这样的形式?
这定义数据库结构更Java有关系吗?
是Java的问题,用Interface
或者可以这样一个结构:
public class jiegou{
private int id;
private String name;
private int[] fatheid;//存放斧节点的点
.....
get()
..
set()
......
}
建议用interface
ID name
1 java
2 Borland
3 JBuilder RelationTable
ChildID ParentID
3 1
3 2
To carolbaby:I think the redundant is not better than uiiu's!
To all:this is a database structure problem,not java!
表中数据: 1 java 0
2 Borland 0
3 JBuilder 1
4 JBuilder 1/2小人的愚见!! 刚刚看数据结构 !!!望楼主见谅!!!
表中数据: 1 java 0
2 Borland 0
3 JBuilder 1,2
to:carolbaby(猫儿) 不知道分成两个表是否在效率上比我那上面的设置更好?
id fatherid
不过可以通过一次性把数据库中所有的记录全部读出来,在内存实现递归生成数。
// $Id: MenuTree.java,v 1.10 2000/02/02 15:18:35 gongke Exp $
package peiyang.priv;public class MenuTree {
public ArrayList cach = new ArrayList();
private DB mydb = new DB();
/**
* 取得子菜单数据集(递归调用)
*/
public void getChildMenu(int fatherId) throws java.sql.
SQLException {
CachedRowSet rs = new CachedRowSet();
for (int i=0;i<cach.size();i++){
Menu menuItems=(Menu)cach.get(i);
if (menuItems.getFatherId()==fatherId){
Menu menuItem = new Menu();
menuItem.setMenuId(menuItems.getMenuId());
menuItem.setMenuName(menuItems.getMenuName());
menuItem.setMenuLevel(menuItems.getMenuLevel());
menuItem.setMenuUrl(menuItems.getMenuUrl());
menuItem.setFatherId(menuItems.getFatherId());
tree.add(menuItem);
getChildMenu(menuItem.getMenuId());
}
} }
public void initial() {
CachedRowSet rs = null;
try {
String sql = "select * from Menu order by menuOrder";
//System.out.println(sql);
rs = mydb.executeQuery(sql);
while (rs.next()) {
Menu menuItem = new Menu();
menuItem.setMenuId(rs.getInt("menuId"));
menuItem.setMenuName(rs.getString("menuName"));
menuItem.setMenuLevel(rs.getInt("menuLevel"));
menuItem.setFatherId(rs.getInt("fatherId"));
menuItem.setMenuUrl(rs.getString("menuUrl"));
cach.add(menuItem);
}
}
catch (Exception e) {
System.out.println("initial:"+e.getMessage());
}
} public void destroy() {
cach.clear();
} public static void main(String args[]) {//测试用利
MenuTree mytree = new MenuTree();
mytree.initial("1");
try {
mytree.getUserMenu(0, "1");
}
catch (Exception e) {
System.out.println(e.getMessage());
}
for (int i = 0; i < mytree.tree.size(); i++) {
Menu myMenu = (Menu) mytree.tree.get(i);
System.out.println(myMenu.getMenuName());
}
}
}
这样对于数据库中角色和彩旦不多的情况下,数据库访问速度可以不计,而在内存中实现递归也很快。
同意 carolbaby(猫儿) 的看法。To longrenrex(菜菜龙) 从楼主的例子不是可以看出“一个子类可以有多个父类”吗?
表中数据: 1 java 0
2 Borland 0
3 JBuilder 1
4 JBuilder 2