永发信息网

java bufferreader读txt文件

答案:2  悬赏:10  手机版
解决时间 2021-04-11 20:00
我想读取一个保存节点之间关系的txt文件,实现一边读取一边构建邻接表,比如:
0 1
0 2
1 3
1 5
2 6
上面的数字代表节点编号,当读到0 2结束时构建0的邻接表,读到1 5结束时构建1的邻接表,等等,怎么实现?
最佳答案
邻接表?二叉树吧?
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) throws ParseException {
BufferedReader br = null;
String filename = "aaa.txt";
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(filename)));
String buf = null;
TreeNode root = null;
Map nodeMap = new HashMap();;
while (null != (buf = br.readLine())) {
root = putToTree(root, nodeMap, buf.split(" "));
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
// ignore
}
}
}
private static TreeNode putToTree(TreeNode root, Map nodeMap, String[] data) {
if (data == null || data.length < 2) {
return root;
}
TreeNode nodeTmp = nodeMap.get(data[0]);;
if (nodeTmp == null) {
nodeTmp = new TreeNode(data[0]);
nodeMap.put(data[0], nodeTmp);
}
if (nodeTmp.getLeft() == null) {
nodeTmp.setLeft(new TreeNode(data[1]));
nodeMap.put(data[1], nodeTmp.getLeft());
} else if (nodeTmp.getRight() == null) {
nodeTmp.setRight(new TreeNode(data[1]));
nodeMap.put(data[1], nodeTmp.getRight());
} else {
System.out.println("重复");
}
if (root == null) {
root = nodeTmp;
}
return root;
}
}
class TreeNode {
private String data;
private TreeNode left = null;
private TreeNode right = null;
public TreeNode(String data) {
super();
this.data = data;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public TreeNode getLeft() {
return left;
}
public void setLeft(TreeNode left) {
this.left = left;
}
public TreeNode getRight() {
return right;
}
public void setRight(TreeNode right) {
this.right = right;
}
}
全部回答
亲,请留下你的邮箱!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
西安市里租房的价格在多少?
你好,能寄读吗?高中
消费者物价指数(Consumer Price Index),英文
u盘能放exe的文件吗?
越王勾践卧薪尝胆多少年?才打败吴王夫差?
现在哪里下冰雹?
做堕胎什么时间,做打胎手术的时间什么时候最
石家庄有几个天元
红米note3手机被摔了一下,开屏发现屏幕上有
梦幻的69的极品STL的伤害大概多少?具体要怎
露天影院怎么看不了??
Li Ping has decided to go abroad for furth
奥特曼为什么每次打完怪兽都会点下头?
上海到长春有红眼航班吗?怎么预定?
焦作市雄狮保温建材有限公司在什么地方啊,我
推荐资讯
映南批发部地址在什么地方,想过去办事
你们喜欢科比吗?还是詹姆斯?
网络上有多少人是炒作炒出名的?
温州市奥奔酒业进出口有限公司这个地址在什么
怎样有效的减小肚子
晚上十一点去肯德基还有汉堡吃吗 据说是二十
【小题1】Stand-up is a kind of ccomedy(喜
大航海时代4在地图上怎么攻击别人,
东风裕隆启阳汽车销售有限公司怎么去啊,有知
大风电脑耗材地址有知道的么?有点事想过去
单选题儒家思想经过不断发展,逐渐成为中国传
关于家风的格言,如何填写有关家风的格言诗句
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?