性能在Java中读取和处理这一行文件的最快方式是什么?
我有以下代码:
static HashMap<Integer, ArrayList<Integer>> parseInput(String filename) throws IOException {
String[] edges = new String[0];
BufferedReader br = new BufferedReader(new FileReader(filename));
String line;
while ((line = br.readLine()) != null) {
edges = line.split(",");
}
br.close();
edges[0] = edges[0].replace("[", "");
edges[edges.length - 1] = edges[edges.length - 1].replace("]", "");
HashMap<Integer, ArrayList<Integer>> adj = new HashMap<>();
int i = 0;
while(i < edges.length) {
Integer l = Integer.parseInt(edges[i].replace("(", ""));
Integer r = Integer.parseInt(edges[i + 1].replace(")", ""));
if(adj.get(l) == null) {
adj.put(l, new ArrayList<Integer>());
adj.get(l).add(r);
}
else {
adj.get(l).add(r);
}
i += 2;
}
return adj;
}
它读取一个文本文件,该文件看起来类似于:[(0,1),(0,2),(1,2),(1,3),(1,4),(2,3),(3,5),(4,5)]
,它表示图形中的边列表。它只有一行。程序读取列表并将边添加到表示邻接列表的哈希映射中
读取该文件并将边缘提取到HashMap的最快方法是什么
# 1 楼答案
我知道streams和regex通常比较慢,但有更紧凑和可读性更好的优势。因此,即使我的答案没有回答您关于时间方面最佳性能的问题,如果您只有一行要读,并且您的方法没有被频繁连续调用,那么可能也值得考虑: