Package com.coyotegulch.jisp
Class Huffman
java.lang.Object
com.coyotegulch.jisp.Huffman
Compresses and decompresses objects using the Huffman algorithm. Huffman
encoding creates a set of codes for which the shortest code represents the
most common piece of data. Codes created by the Huffman algorithm require
a file to be analyzed, counting bytes to determine their frequency. From
the frequencies, the Huffman algorithm builds a table of codes used to
compress the information. Including the table of codes with the compressed
data allows the original file to be reconstructed.
To be most effective, Huffman encoding uses a variable length code, where no code is a prefix of another, which makes decompression easier by allowing the extraction of the file bit-by-bit. The shortest codes are assigned to the most common characters, with infrequent characters receiving longer codes.
Objects to be compressed must be Serializable.
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic Object
decode
(HuffmanEncoded enc) Decodes a compressed object using the Huffman algorithm.static HuffmanEncoded
Encodes an object using Huffman compression.
-
Constructor Details
-
Huffman
public Huffman()
-
-
Method Details
-
encode
Encodes an object using Huffman compression.- Parameters:
obj
- serializable object to be compressed- Returns:
- a new
HuffmanEncoded
object containing the compressed object and its encoding table - Throws:
IOException
- when an I/O exception is thrown by an underlying java.io.* class- See Also:
-
decode
Decodes a compressed object using the Huffman algorithm.- Parameters:
enc
- object to be decompressed- Returns:
- the decompressed
Object
- Throws:
IOException
- when an I/O exception is thrown by an underlying java.io.* classClassNotFoundException
- when an explicit cast fails- See Also:
-