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等离子电视
如果使用二分法进行数据查找,理论上查找效率应该会更快。