com.coyotegulch.jisp

Class Huffman

public class Huffman extends Object

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: HuffmanEncoded

Method Summary
static Objectdecode(HuffmanEncoded enc)
Decodes a compressed object using the Huffman algorithm.
static HuffmanEncodedencode(Object obj)
Encodes an object using Huffman compression.

Method Detail

decode

public static Object decode(HuffmanEncoded enc)
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.* class ClassNotFoundException when an explicit cast fails

See Also: HuffmanEncoded

encode

public static HuffmanEncoded encode(Object obj)
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: HuffmanEncoded