private void buildCodes() { codes = new TreeMap<Integer, HuffmanBitCode>(); int codeLength = 0, codeValue = -1; for (final Object key : codeBook.keySet()) { // Iterate over code lengths @SuppressWarnings("SuspiciousMethodCalls") final SortedSet<Integer> get = codeBook.get(key); final int intKey = Integer.parseInt(key.toString()); for (final Integer entry : get) { // Iterate over symbols final HuffmanBitCode code = new HuffmanBitCode(); code.bitLength = intKey; // given: bit length code.value = entry; // given: symbol codeValue++; // increment bit value by 1 final int delta = intKey - codeLength; // new length? codeValue = codeValue << delta; // pad with 0's code.bitCode = codeValue; // calculated: huffman code codeLength += delta; // adjust current code length if (NumberOfSetBits(codeValue) > intKey) throw new IllegalArgumentException("Symbol out of range"); codes.put(entry, code); // Store HuffmanBitCode } } }
private void buildCodes() { codes = new TreeMap<>(); int codeLength = 0, codeValue = -1; for (final Object key : codeBook.keySet()) { // Iterate over code lengths @SuppressWarnings("SuspiciousMethodCalls") final SortedSet<Integer> get = codeBook.get(key); final int intKey = Integer.parseInt(key.toString()); for (final Integer entry : get) { // Iterate over symbols final HuffmanBitCode code = new HuffmanBitCode(); code.bitLength = intKey; // given: bit length code.value = entry; // given: symbol codeValue++; // increment bit value by 1 final int delta = intKey - codeLength; // new length? codeValue = codeValue << delta; // pad with 0's code.bitCode = codeValue; // calculated: huffman code codeLength += delta; // adjust current code length if (NumberOfSetBits(codeValue) > intKey) throw new IllegalArgumentException("Symbol out of range"); codes.put(entry, code); // Store HuffmanBitCode } } }
private void buildCodes() { codes = new TreeMap<Integer, HuffmanBitCode>(); int codeLength = 0, codeValue = -1; for (final Object key : codeBook.keySet()) { // Iterate over code lengths @SuppressWarnings("SuspiciousMethodCalls") final SortedSet<Integer> get = codeBook.get(key); final int intKey = Integer.parseInt(key.toString()); for (final Integer entry : get) { // Iterate over symbols final HuffmanBitCode code = new HuffmanBitCode(); code.bitLength = intKey; // given: bit length code.value = entry; // given: symbol codeValue++; // increment bit value by 1 final int delta = intKey - codeLength; // new length? codeValue = codeValue << delta; // pad with 0's code.bitCode = codeValue; // calculated: huffman code codeLength += delta; // adjust current code length if (NumberOfSetBits(codeValue) > intKey) throw new IllegalArgumentException("Symbol out of range"); codes.put(entry, code); // Store HuffmanBitCode } } }
private void buildCodes() { codes = new TreeMap<Integer, HuffmanBitCode>(); int codeLength = 0, codeValue = -1; for (final Object key : codeBook.keySet()) { // Iterate over code lengths @SuppressWarnings("SuspiciousMethodCalls") final SortedSet<Integer> get = codeBook.get(key); final int intKey = Integer.parseInt(key.toString()); for (final Integer entry : get) { // Iterate over symbols final HuffmanBitCode code = new HuffmanBitCode(); code.bitLength = intKey; // given: bit length code.value = entry; // given: symbol codeValue++; // increment bit value by 1 final int delta = intKey - codeLength; // new length? codeValue = codeValue << delta; // pad with 0's code.bitCode = codeValue; // calculated: huffman code codeLength += delta; // adjust current code length if (NumberOfSetBits(codeValue) > intKey) throw new IllegalArgumentException("Symbol out of range"); codes.put(entry, code); // Store HuffmanBitCode } } }