java实现树的添加和取父节点,子节点;聚合树,实现选项菜单功能
2014-03-22 20:32
573 查看
package com.kane.test;
import java.util.ArrayList;
import java.util.List;
public class Tree {
private List<Node> list=new ArrayList<Node>();
/**
* 内部类
* @author buaa-pc
*
*/
class Node{
String data;
String parent;
}
public void add(String parent,String child) {
Node n=new Node();
n.data=child;
n.parent=parent;
list.add(n);
}
/**
* 获取父节点
* @param x
* @return
*/
public String getParent(String x) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).data.equals(x)) {//比较内容
return list.get(i).parent;
}
}
return null;
}
public List<String> getChild(String x) {
List<String> newList=new ArrayList<String>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).parent.equals(x)) {
newList.add(list.get(i).data);
}
}
return newList;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Tree a=new Tree();
a.add("世界","欧洲");
a.add("世界","亚洲");
a.add("世界","美洲");
a.add("亚洲","中国");
a.add("亚洲","日本");
a.add("亚洲","韩国");
a.add("中国","北京");
a.add("中国","江苏");
a.add("中国","上海");
a.add("中国","安徽");
System.out.println(a.getParent("安徽"));
System.out.println("-------------");
System.out.println(a.getChild("中国"));
}
}
package com.kane.test;
import java.util.List;
import java.util.Scanner;
public class MyMenu {
Tree tree=new Tree();
public void add(String parent,String child) {
tree.add(parent, child);//用了聚合的方式,没用继承实现add
}
public String go(String x) {
Scanner scanner=new Scanner(System.in);
for(;;){
List<String> lst=tree.getChild(x);//组合方式实现lst
if (lst.isEmpty()) {
return x;
}
System.out.println("-----------");
for (int i = 0; i < lst.size(); i++) {
System.out.println(i+"."+lst.get(i));
}
System.out.println("u.请返回上一级");
System.out.println("-----------");
System.out.println("请输入选择:");
String string=scanner.nextLine();
if (string.equals("u")) {
String x1=tree.getParent(x);
if (x1!=null) {
x=x1;
continue;
}
}
try {//防止输入异常
String x1=lst.get(Integer.parseInt(string));
x=x1;
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("请重新选择:");
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
//创建菜单对象
MyMenu mm=new MyMenu();
mm.add("水果","苹果");
mm.add("水果","香蕉");
mm.add("水果","梨子");
mm.add("苹果","红富士苹果");
mm.add("苹果","国光苹果");
mm.add("国光苹果","富强1号");
mm.add("国光苹果","富强2号");
String t=mm.go("水果");
System.out.println("您选择:"+t);
}
}
import java.util.ArrayList;
import java.util.List;
public class Tree {
private List<Node> list=new ArrayList<Node>();
/**
* 内部类
* @author buaa-pc
*
*/
class Node{
String data;
String parent;
}
public void add(String parent,String child) {
Node n=new Node();
n.data=child;
n.parent=parent;
list.add(n);
}
/**
* 获取父节点
* @param x
* @return
*/
public String getParent(String x) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).data.equals(x)) {//比较内容
return list.get(i).parent;
}
}
return null;
}
public List<String> getChild(String x) {
List<String> newList=new ArrayList<String>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).parent.equals(x)) {
newList.add(list.get(i).data);
}
}
return newList;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Tree a=new Tree();
a.add("世界","欧洲");
a.add("世界","亚洲");
a.add("世界","美洲");
a.add("亚洲","中国");
a.add("亚洲","日本");
a.add("亚洲","韩国");
a.add("中国","北京");
a.add("中国","江苏");
a.add("中国","上海");
a.add("中国","安徽");
System.out.println(a.getParent("安徽"));
System.out.println("-------------");
System.out.println(a.getChild("中国"));
}
}
package com.kane.test;
import java.util.List;
import java.util.Scanner;
public class MyMenu {
Tree tree=new Tree();
public void add(String parent,String child) {
tree.add(parent, child);//用了聚合的方式,没用继承实现add
}
public String go(String x) {
Scanner scanner=new Scanner(System.in);
for(;;){
List<String> lst=tree.getChild(x);//组合方式实现lst
if (lst.isEmpty()) {
return x;
}
System.out.println("-----------");
for (int i = 0; i < lst.size(); i++) {
System.out.println(i+"."+lst.get(i));
}
System.out.println("u.请返回上一级");
System.out.println("-----------");
System.out.println("请输入选择:");
String string=scanner.nextLine();
if (string.equals("u")) {
String x1=tree.getParent(x);
if (x1!=null) {
x=x1;
continue;
}
}
try {//防止输入异常
String x1=lst.get(Integer.parseInt(string));
x=x1;
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("请重新选择:");
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
//创建菜单对象
MyMenu mm=new MyMenu();
mm.add("水果","苹果");
mm.add("水果","香蕉");
mm.add("水果","梨子");
mm.add("苹果","红富士苹果");
mm.add("苹果","国光苹果");
mm.add("国光苹果","富强1号");
mm.add("国光苹果","富强2号");
String t=mm.go("水果");
System.out.println("您选择:"+t);
}
}
相关文章推荐
- 图形的绘制,如何使用自定义画笔(颜色,线宽,线形)。如何为程序中添加选项菜单和选项设置对话框,如何使用标准颜色对话框,如何使用字体对话框,在选项对话框中实现预览功能。实现选项对话框和窗口类中的数据交换。如何改变对话框和控件的背景色,如何改变控件的文本颜色,
- java实现的可以无限级别添加子节点的菜单树
- Java 记事本——今天添加了简单的插入时间和自动换行菜单的实现
- ASP.NET实现微信功能(1)(创建菜单,验证,给菜单添加事件)
- 菜单选项OptionsMenu实现改变字体颜色和改变字体大小的功能
- eclipse 编写Android程序时,在menu添加菜单节点没有“Item”之类的选项
- MFC 添加右键菜单选项功能
- java-第十四章-代参的方法(二)-实现MyShopping系统的添加会员功能
- python实现应用程序在右键菜单中添加打开方式功能
- 死亡历险,翻开新的一篇之Delphi 连接 JAVA WebService,并实现查找,添加,修改,删除等功能
- Java 记事本——今天添加了简单的插入时间和自动换行菜单的实现
- 这是一个关于XML文档的操作管理器XMLHelper类,类中包括XML文档的创建,文档节点和属性的读取,添加,修改,删除的方法功能的实现
- jQuery 复制节点的元素实现添加到购物车功能
- java实现节点循环菜单
- java图形用户界面实现菜单功能
- 单链表的java语言完整实现含添加删除节点
- 利用DhtmlXtree实现展现,修改,添加,删除,移动功能一棵树上实现,iframe的单个滑动条显示,包含在iframe中树节点中文内容过长问题解决
- Java右键菜单实现文本组件内容的的复制、粘贴、剪切功能
- JTree右键菜单实现编辑、添加、删除节点
- JAVA编写的浏览器,在别人的基础上做了些许修改,实现了前进,后退,刷新功能,添加了一个搜索框,具体情况在运行结果中的文件-->注意中