如何将 ImmutableList<Number> 写入文件?

How to write an ImmutableList<Number> to a file?

这应该很简单,但是写大约 40 MB 大约需要一分钟。必须有更好的方法。我想在将 Number 转换为 double 时会遇到很多麻烦,但我不确定这是否是问题所在。将 ImmutableList<Number> 写入双精度二进制文件的最快方法是什么?

public static void multiDoubleToImgFastForSO(String outFilename, ImmutableList<ImmutableList<Number>> arrays) {
        FileOutputStream fos = null;
        DataOutputStream dos = null;
        
        try {
            fos = new FileOutputStream(outFilename);
            dos = new DataOutputStream(fos);
            
            for (ImmutableList<Number> array : arrays) {
                
                for (Number number : array) {
                    dos.writeDouble(number.doubleValue());
                }
            }
            
            dos.close();
            fos.close();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

处理大量数据时,建议使用缓冲 i/o 流,因此以下更新应该会提高性能。

另外,上面的代码片段需要使用try-with-resources

try (DataOutputStream dos = new DataOutputStream(
    new BufferedOutputStream(new FileOutputStream(outputFilename), 16_000)
)) {
    for (ImmutableList<Number> array : arrays) {
        for (Number number : array) {
            dos.writeDouble(number.doubleValue());
        }
    }
}