我正在用Java构建一个Web应用程序(Tapestry 5)。 我想创建一个多级菜单,我可以在页面顶部显示根元素,并在左侧显示选定的子元素。Java多级菜单结构
要实现这一点,我想用一个树状结构是这样的:
public class SiteMap {
private List<MenuItem> root;
public class MenuItem {
private String pageFileName;
private String pageNavigationName;
private List<MenuItem> children;
private MenuItem parent;
public MenuItem(String pageFileName, String pageNavigationName, MenuItem parent) {
this.pageFileName = pageFileName;
this.pageNavigationName = pageNavigationName;
this.parent = parent;
}
public String getPageFileName() {
return pageFileName;
}
public String getPageNavigationName() {
return pageNavigationName;
}
public List<MenuItem> getChildren() {
return children;
}
public MenuItem getParent() {
return this.parent;
}
}
}
现在,如果我想根据1个父项的儿童(只有在pageFileName - 字符串),以建立一个菜单在树的某个地方。我必须通过树遍历遍历才能找到基于pageFileName(String)的父项,这似乎不是一个好方法。
这是(使用树结构)正确的方式来实现这个?还是有更好的选择? 任何想法和提示都表示赞赏!
在此先感谢!
弥敦道
嘿谢谢你的回答。 这里的问题是,我没有“curr”作为MenuItem数据类型,而只是作为一个String(页面文件的名称)。所以我不得不递归(?)用这个pageFileName在树上搜索正确的父节点。 –
好吧,我误解了,也许只是添加一个HashMap快速查找。 –
好的,我会尝试 谢谢 –