如果您没有 RAM,则必须将矩阵存储在文件中并根据需要查找所需的数据。
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("matrix")));
for(int i=0;i<25000;i++){
for(int j=0;j<25000;j++){
double value = //Compute value
out.writeDouble(value);
}
}
out.close();
然后得到位置 (i, j) 的值
FileInputStream fis = new FileInputStream("matrix");
DataInputStream in = new DataInputStream(fis);
fis.getChannel().position((i * 25000L + j) * (Double.SIZE / 8));
double value = in.readDouble();
请注意,文件读取已经非常慢,但寻找特定位置甚至更慢。如果你能弄清楚如何排序你的读写操作,这样你就不必每次都去寻找,你的状态会好很多。此外,您可能希望将每一列或每一行放在单独的文件中,具体取决于您打算如何使用矩阵。您可能还想看看使用 Octave 或 Matlab 而不是 Java。