java_Part2读文件wiki-edges.txt 列出节点和其向外邻接的节点; 现将文件wiki-edges.txt改写为类似pagerank.txt的形式,即节点和其向外邻接节点的形
package experiment7.exp3; import java.io.File; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.*; /*1、读pagerank.txt中的每个节点,计算出每个节点的pagerank值,当每个节点的pagerank值与上一轮的pagerank值相差小于0.001时, 迭代停止,并输出最终各节点的pagerank值。 2.读文件wiki-edges.txt和wiki-vertices.txt,其中 wiki-vertices.txt列出节点的编号和对应的网页标题。(目前用不到它) wiki-edges.txt列出节点和其向外邻接的节点(多行显示)。 现将文件wiki-edges.txt改写为类似pagerank.txt的形式,即节点和其向外邻接节点的形式(单行显示)。 输出到文件wiki-adjacentnodes.txt中。 */ public class calc2 { public static void main(String[] args) { String dir = "D:\\ecloud\\textbooks\\java\\experiment_doc\\dataExperiment7"; String fileName = "\\wiki-edges.txt";/*"\\test.txt";// */ String saveFileName = "\\wiki-adjacentNodes.txt"; File file = new File(dir + fileName); int N = 0; /*这里没有必要自定义一个Node类:*/ // ArrayList<Node2> nodeArrayList = new ArrayList<>();list不满足本题要求 /*用LinkedHashMap()也可以(使用键对值来加速).*/ Map<String, String> map = new HashMap<>(); try { Scanner scanner = new Scanner(file);/*注意,在try中出创建的对象是不能够在try之外使用的.因为在程序运行之前,谁也不知道到底try中的对象能否被创建,所以就不能在try之外利用这个不确定能否被创建出的对象.*/ while (scanner.hasNext()) {//届时看看如何读取换行符.(.read()方法).has..()方法只做判断. //ArrayList<String> list = new ArrayList<>(); N++; String[] tuple = scanner.nextLine().split("\\s+"); /*效率太低没法用.过多的遍历开销太大了.*/ // if ((tuple.length > 1)) { // /*对ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常*/ // for (int i = 0;i<nodeArrayList.size();i++) { // if (nodeArrayList.get(i).name.equals(tuple[0])) { // nodeArrayList.get(i).addNode2(tuple[1]); // } else { // nodeArrayList.add(new Node2(tuple[0],tuple[1])); // } // } // } // else{ // nodeArrayList.add(new Node2(tuple[0],"")); // } if (tuple.length > 1) { if (map.containsKey(tuple[0])) { map.put(tuple[0], map.get(tuple[0]) + "\t" + tuple[1]); } else { map.put(tuple[0], tuple[1]); } } // System.out.println(N + "running...");运行结果迟迟不出,通过打印看是完全停止还是开销过大导致运行反馈慢. }//endWhile } catch (FileNotFoundException e) { e.printStackTrace(); }//endCatch try { PrintWriter pw = new PrintWriter(dir + saveFileName); StringBuffer stringBuffer = new StringBuffer(); for (String x : map.keySet()) { // System.out.println(x+"\t"+map.get(x)); //stringBuffer.append(x+"\t"+map.get(x)); pw.write(x+"\t"+map.get(x)+"\n"); } } catch (FileNotFoundException e) { e.printStackTrace(); } }//endMain }//endClass
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2021-07-12 vscode_c/c++ language component下载不下来