私はこれを理解していません。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;
}