我有一个dat文件,每行包含两个浮点数,用逗号分隔,如下所示:
1.224744871391589,0
1.224747983922952,2.77796297222263e-06
1.224757321499289,1.111185188889053e-05
1.224772884067338,2.500166675000371e-05
1.224794671538333,4.444740755556212e-05
1.224822683788003,6.944907430556598e-05
1.224856920656575,0.0001000066670000149
1.224897381948776,0.000136120185638909
1.224944067433837,0.0001777896302222487
我事先知道了列的长度(30000)。我想将每列存储在一个单独的数组中并返回它。我知道如何在python中执行此操作(使用line.split获取每行两个浮点数)但不确定在Java中最有效的方法是什么(我关心速度)。
答案 0 :(得分:1)
您可以使用BufferedReader和2个数组(每列1个),阅读器将读取下一个双数并将其存储在相应的数组中(您应该在数组之间连续交替)。
这应该可以胜任。我还没有测试过。
double[] firstColumn = new double[30000];
double[] secondColumn = new double[30000];
int index = 0;
try {
BufferedReader in = new BufferedReader(new FileReader("input.dat"));
String str = in.readLine();
while ((str = in.readLine()) != null) {
String[] values = str.split(",");
firstColumn[index] = Double.parseDouble(values[0]);
secondColumn[index++] = Double.parseDouble(values[1]);
}
in.close();
}
catch (IOException e)
{
// do the logging.
}