hashcode是什么意思

来源:百度知道 编辑:UC知道 时间:2024/05/23 23:26:15
hashcode 很多网上都说的不明不白的,很糊涂,我想知道他到底有什么用,举个代码例子吧! 谢谢~~

用最简单的方法来说,hashcode就是一个签名。当两个对象的hashcode一样时,两个对象就有可能一样。如果不一样的话两个对象就肯定不一样。
一般用hashcode来进行比较两个东西是不是一样的,可以很容易的排除许多不一样的东西。
最常用的地方就是在一堆东西里找一个东西。先用你要找的东西的hashcode和所有东西的hashcode比较,如果不一样的话就肯定不是你要找的东西。如果一样的话就很可能是你要找的东西。然后再进行仔细的比较两个东西是不是真的一模一样。

//一个不能加重复内容的容器
class Set {
Object[] objs = new Object[10]; //装东西的的数组
int size = 0; //已经有几个东西

//添加新东西,成功的话返回true,如果已经有了的话返回false
boolean add(Object o) {
for(int i=0;i<size;i++) { //搜索所有已经加进来的对象
if(objs[i].hashCode() == o.hashCode()) //如果hashcode一样的话就说明两个有可能是一样的
if(objs[i].equals(o)) return false; //仔细的确认一下是不是真的一样,如果一样的话就不加入这个对象
}
objs[size++]=o; //确认没有过这个东西,加入数组
return true;
}
}

当使用这个类的时候要确保两个一样的东西的hashcode肯定是一样的。两个不同的东西的hashcode可以是一样的,不过这样会减慢运行速度,所以尽量避免(也就是所谓的碰撞)。

1.一个对象的散列码,什么是散列码呢,简单的说就是通过哈希算法算出来的一大窜数字之类的东西和内存有关.
如果对象1和对象2相等,说明他们的散列码相等!反过来就不一样了!
2.另外hashcode可以减少equals比较的次数,提高运算效率。如果你想深入hashcode到底怎么回事,还是查下权威资料!

什么是hashcode啊 哈稀表是什么东西,HashCode是什么????? hashCode是个什么东西,重写hashCode方法的目的是什么? 为什么重写equals()时也要重写hashCode()?两者什么关系 为什么复合主键要复写equals和hashcode? java中hashtable的关键字类为什么要覆盖equals和hashcode方法? @是什么意思 是什么意思 ^是什么意思 - -| | 是什么意思?