Class Huffman

java.lang.Object
com.coyotegulch.jisp.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:
  • Constructor Details

    • Huffman

      public Huffman()
  • Method Details

    • encode

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

      public static Object decode(HuffmanEncoded enc) throws IOException, ClassNotFoundException
      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: