如何在 Java 中使用 BufferedOutputStream 序列化 HashMap?

How to serialize a HashMap with BufferedOutputStream in Java?

我有一个非常大的 HashMap<String, List<String>> 格式的 HashMap,我想使用 BufferedOutputStream 对其进行序列化,因为我认为它比使用常规 OutputStream 更有效.

但是如何将 HashMap 分成缓冲区大小的块?我应该只遍历 HashMap 吗?

如果您打算写入本地文件,则需要链接 FileOutputStreamBufferedOutputStreamObjectOutputStream。使用以下设置 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();
}

除非输出文件太大,否则不需要进一步分块。