我有一个非常大的格式为HashMap<String, List<String>>
的HashMap,我想使用BufferedOutputStream
序列化它,因为我认为它将比使用常规OutputStream
更高效。
但是,如何将HashMap划分为缓冲区大小的块呢?我应该只遍历HashMap吗?
如果计划写入本地文件,则需要链接FileOutputStream
、BufferedOutputStream
和ObjectOutputStream
。使用以下设置,BufferedOutputStream
应使用8192字节的默认缓冲区来最大限度地减少对文件系统的直接写入。
Map<String, List<String>> data = new HashMap<>();
data.put("myKey", List.of("A", "B", "C"));
File outFile = new File("out.bin");
try (FileOutputStream fos = new FileOutputStream(outFile);
BufferedOutputStream bos = new BufferedOutputStream(fos);
ObjectOutputStream oos = new ObjectOutputStream(bos)) {
oos.writeObject(data);
oos.flush();
}
除非输出文件太大,否则不需要进一步分块。