Печать таблицы частот Хаффмана - PullRequest
0 голосов
/ 01 мая 2019

Я работаю над некоторым кодированием Хаффмана, и я хотел бы иметь возможность распечатать таблицу частот.

Однако я попробовал приведенный ниже код и получил 'несовместимые типы: запись не может быть преобразована в запись for (Map.Entry entry: freq.entrySet ()) 'ошибка. Есть ли способ исправить это там, где я мог бы иметь возможность отображать таблицу частот, где она была бы больше в форме таблицы или массива вместо формы карты?

public static void buildHuffmanTree(String text)
{   // count frequency each character and store it in a map
    Map<Character, Integer> freq = new HashMap<>();
    for (int i = 0 ; i < text.length(); i++)
    {
        if (!freq.containsKey(text.charAt(i)))
        {
            freq.put(text.charAt(i), 0);
        }
        freq.put(text.charAt(i), freq.get(text.charAt(i)) + 1);
    }

    // Create a priority queue to store nodes of Huffman tree
    // Notice that highest priority item has lowest frequency
    PriorityQueue<Node> pq = new PriorityQueue<>((l, r) -> l.freq - 
    r.freq);

    for (Map.Entry<Character, String> entry : freq.entrySet())
    {
        System.out.println(entry.getKey() + " " + entry.getValue());
    }
}

1 Ответ

0 голосов
/ 01 мая 2019

При обходе набора записей указанный тип значения не соответствует типу значения записей в фактической хэш-карте.Фактический тип значения каждой записи - Integer, но вы в настоящее время используете тип String в цикле for.Поэтому я бы предложил изменить цикл for на

for (Map.Entry<Character, Integer> entry : freq.entrySet())
{
    System.out.println(entry.getKey() + " " + entry.getValue());
}
...