hashtabe,hashmap,等为什么要用hash算法
如果是为了2分查找算法,生成一个整数, 好做排序的话, 那么每个字符实际上都对应一个assiic码值
比如
ac = 6163
bb = 6262
因此就算不用hash散列算法 也不会重复呀. 更何况,hash算法也不能保证不发生碰撞. 这个情况下, 为什么还要使用hash呢??? 求明白的给个原因
------解决方案--------------------
key的hash值也不是直接拿来当数组下标用的
下面hashMap的一段代码
public V get(Object key) {
if (key == null)
return getForNullKey();
int hash = hash(key.hashCode());
for (Entry<K,V> e = table[indexFor(hash, table.length)];
e != null;
e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key
------解决方案--------------------
key.equals(k)))
return e.value;
}
return null;
}
看table这个数组下标,是indexFor(hash, table.length)
下面是indexFor方法
static int indexFor(int h, int length) {
return h & (length-1);
}