我不明白这一点。它只发生在 linux 中(在我的机器上运行良好)。只有当我正在阅读的文件中有特殊字符时才会发生这种情况。这可能是 linux 和 Character.equals() 的问题吗?
另一个函数调用中的代码HashMap.get()
。Hashmap.get()
这使用像 Ã 这样的特殊字符为每个打印“null” 。
fis = new FileInputStream(fromFile);
int fromCharInt;
//read a byte at a time from the file
while ((fromCharInt = fis.read()) != -1) {
System.out.println((char)fromCharInt); //prints Ã
System.out.println(hMap.get((char)fromCharInt)); //prints null
}
生成 HashMap
private static HashMap<Character, String> generateMap(HuffmanTree hTree, List<FreqTracker> freqs)
{
HashMap<Character, String> hMap = new HashMap<Character, String>();
BinaryNode<FreqTracker> charNode;
for (FreqTracker freq: freqs)
{
charNode = HuffmanTree.findCharNode(freq.getC(), hTree.getRoot());
hMap.put(freq.getC(), HuffmanTree.getBinaryCode(charNode, ""));
}
return hMap;
}