有一个Model(内含Hashtable),有时候需要根据key找value,有时候又需要根据value找key。
这样高效率的使两个方向的查找都比较快?

解决方案 »

  1.   

    创建两个hashtable  一个key value  一个value key
    用这前判断一下,那个key存在,就取哪个
      

  2.   

    Hashtable内部是一个数组来的,保存了一系列Entry对象(就是封装了Key和Value的一个对象,和放在同一个数组位置的下一个Entry对象引用)
    首先得到int hashCode = key.hashCode();
    然后 hashCode % arraySize得到这个Entry所在的数组位置
    然后在这个位置中的Entry,判断Key是否相等,如果不相等则找Entry.nextEntry直接为空为止
    从上面就可以看出来,Hashtable的原理就是每一个对象都实现的hashCode来快速定位存放位置
    因为在JDK中规范指出:
    a.equals(b) 一定可以推出 a.hashCode() == b.hashCode(); 反之不一定成立。