使用char数组作为Hashtable键

Rav*_*shi 2 java hashtable

我正在使用Hashtable我的java程序.看到异常行为,我感到很惊讶Hastable.下面是我的代码(这不是我的最终代码,我只是创建了一个新的简单项目,其代码运行异常)

    Hashtable<char[], char[]> h1 = new Hashtable<char[], char[]>();
    char[] key = Integer.toString(12).toCharArray();
    char[] val = Integer.toString(21).toCharArray();
    h1.put(key, val);
    System.out.println(h1.containsKey(Integer.toString(12).toCharArray()));// Should print true, since 12 is there in Hashtable
Run Code Online (Sandbox Code Playgroud)

Lou*_*man 7

您不能使用这样的数组作为映射键,因为数组具有默认的,基于引用相等的Object实现equalshashCode.使用String键作为键可以使您的程序按需运行.

  • @Voo是对的.`int [] a = {1}; int [] b = {1}; System.out.println(a == b)`打印`false`. (3认同)
  • @crucified你做了,也许你只是没注意到它..但是因为基本语句("数组具有引用相等性")对于*any*数组是正确的,这就是它的原理. (2认同)