我有一个函数来读取制表符分隔文件,该文件将每列放在一个列表中,并返回列表列表,其中包含列中的所有值。这适用于我用1列和1850行的小测试文件,但我现在用~30k列尝试它,它已经运行了几个小时仍然没有完成。
如何更快地修改以下代码?如果读取文件,如果30k行,1850列更快,我也可以转置输入文件。
public static List<List<String>> readTabDelimited(String filepath) {
List<List<String>> allColumns = new ArrayList<List<String>>();
try {
BufferedReader buf = new BufferedReader(new FileReader(filepath));
String lineJustFetched = null;
for (;;) {
lineJustFetched = buf.readLine();
if (lineJustFetched == null) {
break;
}
lineJustFetched = lineJustFetched.replace("\n", "").replace("\r", "");
for (int i = 0; i < lineJustFetched.split("\t").length; i++) {
try {
allColumns.get(i).add(lineJustFetched.split("\t")[i]);
} catch (IndexOutOfBoundsException e) {
List<String> newColumn = new ArrayList<String>();
newColumn.add(lineJustFetched.split("\t")[i]);
allColumns.add(newColumn);
}
}
}
buf.close();
} catch (Exception e) {
e.printStackTrace();
}
return allColumns;
}