Кодирование методом Хаффмана было бы моим, я первоначально сделал свою собственную немую версию путем уменьшения числа битов для кодирования текста от 8 вниз к меньше, но не думал о переменном числе битов в зависимости от частоты. Тогда я нашел кодирование методом Хаффмана описанным в статье в журнале, и оно открыло много новых возможностей.
Исключение нулевого указателя является результатом распаковки результата inverse.get (animal)
. Если обратный
не содержит ключа animal
, он возвращает null
, «типа» Integer
. Учитывая, что присвоение относится к ссылке int
, Java распаковывает значение в int
, что приводит к исключению нулевого указателя.
Вы должны либо проверить обратное значение . containsKey (animal)
или используйте Integer
в качестве типа локальной переменной, чтобы избежать распаковки и действовать соответственно. Правильный механизм зависит от вашего контекста.
У вас должна быть трассировка стека. Там точно написано, по какой линии это произошло. Опубликуйте его, и мы сможем сказать.
Из всего опубликованного кода я могу «догадаться», что одно из них является потенциальным исключением NullPointerException (NPE).
узел
может иметь значение null и вызывать node.getParent
.
Родитель узла может быть нулевым, и вызов parent.getChildren
может вызвать NPE.
Один из братьев и сестер может иметь значение null и вызывать sibling.equals
может выдать NPE.
cellInfo может иметь значение null, а cellInfo.inverse
выбросит его.
Наконец, "обратный" может быть нулевым и inverse.get ()
бросит его.
Уф !! ...
Итак, чтобы избежать этих безумных догадок,
Проверьте inverse.containsKey (животное), BiMap
. У обратной может не быть животного.