gpt4 book ai didi

java - 哈夫曼树的 HashMap

转载 作者:行者123 更新时间:2023-12-02 06:06:03 25 4
gpt4 key购买 nike

我有一项处理霍夫曼树的作业。我的教授提到我们应该使用 HashMap,但没有解释任何有关它们的内容。我已经查过有关它们的信息,但在我的代码中遇到了它们的问题。这些是我收到的错误消息。

n00832607.java:542: error: incompatible types
for(Map.Entry e : charCounts.entrySet())
^
required: Entry
found: Object
n00832607.java:610: error: incompatible types
for(Map.Entry entry : codeTable.entrySet())
^
required: Entry
found: Object

所以我可以看出它希望它返回一个条目,但我不太确定如何处理这个问题。我应该把它塑造成某种东西吗?

这是我的代码。

//Beging Huffman Class
class Huffman{

Tree tree;

TreeMap codeTable;


protected HashMap calculateFrequency(String message)
{

int messageLength = message.length();
char ch;
int count;
HashMap charCounts = new HashMap();

for(int i = 0; i< messageLength; i++)
{

ch = message.charAt(i);

if(charCounts.containsKey(ch))
{
count = (int) charCounts.get(ch);
++count;
charCounts.put(ch, count);
}

else
{
charCounts.put(ch, 1);
}
}
//end for
return charCounts;
}
//end calculateFrequency

protected void createHuffmanTree(String message)
{
HashMap charCounts = calculateFrequency(message);
PriorityQueue trees = new PriorityQueue();
Tree temp;

for(Map.Entry e : charCounts.entrySet())
{

temp = new Tree((char)e.getKey(), (int)e.getValue());
trees.add(temp);

}


while(trees.size() > 1)
{
temp = new Tree((Tree)trees.remove(), (Tree)trees.remove());
trees.add(temp);
}
tree = (Tree)trees.remove();

}
//end createHuffmanTree

//Begin displayCodeTable
public void displayCodeTable()
{

System.out.println("Character Code");

for(Map.Entry entry : codeTable.entrySet())
{
char key = (char)entry.getKey();
System.out.println(key + "" + entry.getValue());
}
}
//End displayCodeTable

最佳答案

只是新奇的 Java 语法(从 Java 5 或 6 开始可用,我忘了)对转换不太友好。

在过去,你必须这样做:

    TreeMap map = new TreeMap();
Iterator itr = map.entrySet().iterator();
while (itr.hasNext())
{
E thing = (E)itr.next();
}

您可以通过在 TreeMap 中输入 <,> 并使用 keySet() 而不是 entrySet() 来解决此问题。
即:

    TreeMap map = new TreeMap<String, String>();  (or whatever types you're mapping)

如果您想要快速修复,请使用此:

    for (Object o : map.entrySet()) {
Map.Entry me = (Map.Entry)o;
}

关于java - 哈夫曼树的 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22286145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com