我有一个哈希映射,似乎正在改变我存储在其中的值。几乎所有的密钥都映射正确;然而,entrySet()
中有大约4或5个键的值完全不同于实际放入其中的值。我完全丧失了。为什么我的哈希映射中的值与放入的值不同?
public static void main(String args[]){
HashMap<Character, Integer> map = make_map();
System.out.print(map.entrySet());
}
public static HashMap<Character,Integer> make_map(){
HashMap<Character, Integer> map = new HashMap<>();
map.put('a',100000);
map.put('b',110000);
map.put('c',100100);
map.put('d',100110);
map.put('e',100010);
map.put('f',110100);
map.put('g',110110);
map.put('h',110010);
map.put('i',010100);
map.put('j',010110);
map.put('k',101000);
map.put('l',111000);
map.put('m',101100);
map.put('n',101110);
map.put('o',101010);
map.put('p',111100);
map.put('q',111110);
map.put('r',111010);
map.put('s',011100);
map.put('t',011110);
map.put('u',101001);
map.put('v',111001);
map.put('w',010111);
map.put('x',101101);
map.put('y',101111);
map.put('z',101011);
map.put(' ',000000);
return map;
}
我注意到我的几个条件没有出于某种原因,然后当我打印出来的entrySet()
我发现像钥匙“我”都被映射到4160,即使我明确提出010100
。另外,'j'也给了我一个4160的虚假结果。其他人都很好......然后再次字符“W”和其他几个人被映射到与4
开始这里的整个条目集4个数字:
[ =0, a=100000, b=110000, c=100100, d=100110, e=100010, f=110100, g=110110, h=110010, i=4160, j=4168, k=101000, l=111000, m=101100, n=101110, o=101010, p=111100, q=111110, r=111010, s=4672, t=4680, u=101001, v=111001, w=4169, x=101101, y=101111, z=101011]
,你可以看到't'和's'不像其他前面提到的那样。这是怎么回事?
从0开始的数字文字被解析为八进制数字(基数8)。也许你应该使用'HashMap'。 –
Eran
重复说明*为什么*结果会以这种方式出现,但实际上并没有提供任何解决方法来解决此问题。 – Makoto