转帖,还是转帖
哈希码产生的依据:哈希码并不是完全唯一的,它是一种算法,让同一个类的对象按照自己不同的特征尽量的有不同的哈希码,但不表示不同的对象哈希码完全不同。也有相同的情况,看程序员如何写哈希码的算法。
下面给出几个常用的哈希码的算法。
1:object类的hashcode.返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样。
2:string类的hashcode.根据string类包含的字符串的内容,根据一种特殊算法返回哈希码,只要字符串内容相同,返回的哈希码也相同。
3:integer类,返回的哈希码就是integer对象里所包含的那个整数的数值,例如integer i1=new integer(100),i1.hashcode的值就是100 。由此可见,2个一样大小的integer对象,返回的哈希码也一样。
类 hashmap<k,v>
<dl></dl>
<dt></dt>
<dt>类型参数:</dt>
<dd></dd>
<code>k</code> - 此映射所维护的键的类型
<code>v</code> - 所映射值的类型
<dd> </dd>
<dd>基于哈希表的 map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和null 键。(除了非同步和允许使用 null 之外,hashmap 类与 hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。</dd>
输出如下:

由上述例子可见:只重写了equasl方法的key类 在用做hash中的键值的时候 两个equasl为true的对象不能获取相应 的value的而重写了hashcode方法和equals方法的key_类 两个相等的对象 可以获取同一个value的,这样更符合生活中 的逻辑hashmap对象是根据key的hashcode来获取对应的vlaue
因而两个hashcode相同的对象可以获取同一个value