如何以内存有效格式将哈希图写入文件?

问题描述

我正在编写霍夫曼编码/解码算法,但遇到了存储霍夫曼树占用大量空间的问题。目前,我正在将树转换为hashMap,例如-> hashMap ,然后存储该哈希图。问题是,尽管字符串压缩得很好,但添加存储在哈希图中的霍夫曼树数据却增加了太多开销,以至于实际上它最终要比原始结果大。目前,我只是天真地将[数据,值]对写入文件中,但我想一定有某种更棘手的方法可以做到这一点。有什么想法吗?

解决方法

您不需要树来进行编码。您所需要做的就是每个符号的位长以及排序符号的方法。参见Canonical Huffman Code

实际上,您所需要做的只是按照位长排序的符号,在位长内按符号排序,然后是每个长度的代码的 number 。仅需这两件事,您就可以进行编码。