Hashtable怎样实现快速的getKeyByValue(Object value)? 有一个Model(内含Hashtable),有时候需要根据key找value,有时候又需要根据value找key。这样高效率的使两个方向的查找都比较快? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 创建两个hashtable 一个key value 一个value key用这前判断一下,那个key存在,就取哪个 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(); 反之不一定成立。 String对象的一点疑惑 新手问题,关于Netbeans下的GUI风格 java安装的问题 关于数组的 经典题目求算法 用Swing实现类似于Visio的思路 500分 如何解决!JBuider光标定位不准确的问题啊! 请告知jbuilder4.0 for linux的ent包哪里有下载。 求老师帮看一下我写的一个最基本的javabean测试类,为什么set ,get没作用 关于生成安装程序的问题,需要用到第三方API,如comm。高分求解 java io优化处理 求代码
用这前判断一下,那个key存在,就取哪个
首先得到int hashCode = key.hashCode();
然后 hashCode % arraySize得到这个Entry所在的数组位置
然后在这个位置中的Entry,判断Key是否相等,如果不相等则找Entry.nextEntry直接为空为止
从上面就可以看出来,Hashtable的原理就是每一个对象都实现的hashCode来快速定位存放位置
因为在JDK中规范指出:
a.equals(b) 一定可以推出 a.hashCode() == b.hashCode(); 反之不一定成立。