Class Huffman


  • public class Huffman
    extends java.lang.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
    • Constructor Summary

      Constructors 
      Constructor Description
      Huffman()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.Object decode​(HuffmanEncoded enc)
      Decodes a compressed object using the Huffman algorithm.
      static HuffmanEncoded encode​(java.lang.Object obj)
      Encodes an object using Huffman compression.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Huffman

        public Huffman()
    • Method Detail

      • encode

        public static HuffmanEncoded encode​(java.lang.Object obj)
                                     throws java.io.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:
        java.io.IOException - when an I/O exception is thrown by an underlying java.io.* class
        See Also:
        HuffmanEncoded
      • decode

        public static java.lang.Object decode​(HuffmanEncoded enc)
                                       throws java.io.IOException,
                                              java.lang.ClassNotFoundException
        Decodes a compressed object using the Huffman algorithm.
        Parameters:
        enc - object to be decompressed
        Returns:
        the decompressed Object
        Throws:
        java.io.IOException - when an I/O exception is thrown by an underlying java.io.* class
        java.lang.ClassNotFoundException - when an explicit cast fails
        See Also:
        HuffmanEncoded