【发布时间】:2016-04-18 01:45:59
【问题描述】:
我有一个项目作为任务,我还没有实施,但我已经想出了它的想法,但最后一步是我无法弄清楚的,甚至是如何实施。这就是我想要的项目:
我想使用 java 创建一个基于文本的压缩模型。我将创建一个 Huffman 编码器和解码器,并将这些程序存储在两台计算机中:PC1 和 PC2。
现在在 PC1 中,我将提供一个“data.txt”文件作为我的 Huffman 编码器程序的输入,它会创建另一个名为“binary.txt”的文件,其中包含 0 和 1。现在不是传输“data.txt”文件,而是通过电子邮件将“binary.txt”文件发送到PC2,并使用那里的解码器java程序,我将尝试重新创建“data.txt”。这样我就可以使用 Huffman 机制压缩我的文件了。
所以问题是我是 java 新手(到目前为止我并不害怕),而且我不知道如何从 PC1 导出树数据结构以及“binary.txt”文件,因为对于霍夫曼解码(稍后在 PC2 中),我将需要访问在 PC1 中创建的霍夫曼树,那么我该如何解决或创建这个项目?
还有其他更好的方法来实施这个项目吗? Hashmap 或 splay 树或任何其他数据结构?
谢谢
【问题讨论】:
-
我不知道 Huffman 编码,但听起来您有兴趣将树结构序列化和反序列化为/从某种可传输格式(如文本文件),我猜您会随二进制文件一起发送.txt 文件。您应该看一下树遍历算法并找出一种利用这些算法的方法。这个问题也可能提供解决方案:stackoverflow.com/questions/759707/…
-
通常当我想导出一棵树时,我会执行“有序遍历”并打印(或写入流)每个节点。 en.wikipedia.org/wiki/Tree_traversal
-
或者另一方面,假设我创建了一个类并创建了该特定类的一个对象,然后为该特定对象设置了一个名为“length”的属性为 5。无论如何我可以在另一个java程序中使用这个值吗?同样在发布此问题后,我遇到了另一个站点,其中提到了包含头文件的内容,以防您要导出引用。对这两件事有任何想法吗?
-
@rohitkrishna094 也许您正在考虑对象序列化? javapractices.com/topic/TopicAction.do?Id=57
-
@Roman 是的,我认为这正是我所需要的。谢谢。
标签: java data-structures tree huffman-code