A Simple Java Tree Output

1、在C盘创建一个txt文件test.txt,用于存储需要使用的数据

2、创建Java程序读取txt文件数据,并转化为类

3、将数据输出

4、将数据按照树的形状输出

 

Txt文件数据:

0001	手机	0000
0002	三星手机	0001
0003	苹果手机	0001
0004	三星翻盖手机	0002
0005	三星平板手机	0002
0006	苹果3代	0003
0007	三星滑盖手机	0002
0008	苹果4代	0003
0009	夏普手机	0001
0010	电视	0000
0011	三星电视	0010
0012	三星液晶电视	0011
0013	TCL电视	0010
0014	三星LED电视	0011
0015	三星等离子电视	0011
0016	TCLLED电视	0013
0017	TCL等离子电视	0013


Java程序:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


public class ReadFile {


	public static void main(String[] args) {		
		String filePath = "C:/test.txt";
		List<Tree> treeList = new ArrayList<Tree>();
		//将保存树信息的TXT文件读取到类中
		try {
			BufferedReader br = new BufferedReader(new FileReader(filePath));
			String line = br.readLine();
			while (line != null){
				line = line.trim();
				if(line != ""){
					String[] treeAry = line.split("\t");
					Tree tree = 
						new ReadFile().new Tree(treeAry[0],treeAry[1],treeAry[2]);
					treeList.add(tree);
				}
				line = br.readLine();
			}
		} catch (FileNotFoundException e) {			
			e.printStackTrace();
		} catch (IOException e) {			
			e.printStackTrace();
		}
		//输出读取文件的信息
		for(int i = 0;i<treeList.size(); i++){
			Tree tree = treeList.get(i);
			System.out.println(tree.toString());
		}
		//以树的形状输出信息
		//设置一个最顶端的节点
		Tree topLeaf = new ReadFile().new Tree("0000","目录","null");
		
		WriteTree(topLeaf, treeList , -1);
	}
	
	public static void WriteTree(Tree t, List<Tree>treeList, int level){
		for (int k = 0; k<level; k++){
			System.out.print("--");
		}
		System.out.println(t.getTreeNode());
		level++;
		for(int i = 0;i<treeList.size(); i++){
			Tree leaf = treeList.get(i);
			if(leaf.getParentId().equals(t.getTreeId())){				
				WriteTree(leaf, treeList, level);
			}
		}
	}
	
	public class Tree{
		private String treeId;
		private String treeNode;
		private String parentId;
		
		public Tree(){}
		public Tree(String treeId, String treeNode, String parentId){
			this.treeId = treeId;
			this.treeNode = treeNode;
			this.parentId = parentId;
		}
		
		public String toString(){
			return this.treeId + "\t" + this.treeNode + "\t" + this.parentId;
		}
		public String getTreeId() {
			return treeId;
		}
		public void setTreeId(String treeId) {
			this.treeId = treeId;
		}
		public String getTreeNode() {
			return treeNode;
		}
		public void setTreeNode(String treeNode) {
			this.treeNode = treeNode;
		}
		public String getParentId() {
			return parentId;
		}
		public void setParentId(String parentId) {
			this.parentId = parentId;
		}
		
	}
}

程序运行结果:

0001	手机	0000
0002	三星手机	0001
0003	苹果手机	0001
0004	三星翻盖手机	0002
0005	三星平板手机	0002
0006	苹果3代	0003
0007	三星滑盖手机	0002
0008	苹果4代	0003
0009	夏普手机	0001
0010	电视	0000
0011	三星电视	0010
0012	三星液晶电视	0011
0013	TCL电视	0010
0014	三星LED电视	0011
0015	三星等离子电视	0011
0016	TCLLED电视	0013
0017	TCL等离子电视	0013
目录
手机
--三星手机
----三星翻盖手机
----三星平板手机
----三星滑盖手机
--苹果手机
----苹果3代
----苹果4代
--夏普手机
电视
--三星电视
----三星液晶电视
----三星LED电视
----三星等离子电视
--TCL电视
----TCLLED电视
----TCL等离子电视


如果使用二分法进行数据查找,理论上查找效率应该会更快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值