HashCode和hashMap hashTable
来源:互联网 发布:洞洞板电路设计软件 编辑:程序博客网 时间:2024/05/16 05:23
先看看Java中的HashCode
在Java中,哈希码代表对象的特征。
例如对象 String str1 = “aa”, str1.hashCode= 3104String str2 = “bb”, str2.hashCode= 3106
String str3 = “aa”, str3.hashCode= 3104
根据HashCode由此可得出str1!=str2,str1==str3
哈希码产生的依据:哈希码并不是完全唯一的,它是一种算法,让同一个类的对象按照自己不同的特征尽量的有不同的哈希码,但不表示不同的对象哈希码完全不同。也有相同的情况,看程序员如何写哈希码的算法。
下面给出几个常用的哈希码的算法。
1:Object类的hashCode.返回对象的内存地址经过处理后的结构,由于每个对象的内存地址都不一样,所以哈希码也不一样。
2:String类的hashCode.根据String类包含的字符串的内容,根据一种特殊算法返回哈希码,只要字符串内容相同,返回的哈希码也相同。
3:Integer类,返回的哈希码就是Integer对象里所包含的那个整数的数值,例如Integer i1=new Integer(100),i1.hashCode的值就是100 。由此可见,2个一样大小的Integer对象,返回的哈希码也一样。更多资料请参考这里
类 HashMap<K,V>
java.lang.Object java.util.AbstractMap<K,V> java.util.HashMap<K,V>
- 类型参数:
K
- 此映射所维护的键的类型V
- 所映射值的类型- 基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
HashCode和HashMap之间的关系
先如下代码:
输出如下:由上述例子可见:只重写了equasl方法的Key类 在用做Hash中的键值的时候 两个equasl为true的对象不能获取相应 的Value的而重写了hashCode方法和equals方法的key_类 两个相等的对象 可以获取同一个Value的,这样更符合生活中 的逻辑HashMap对象是根据Key的hashCode来获取对应的Vlaue 因而两个HashCode相同的对象可以获取同一个Value
0 0
- HashCode和hashMap hashTable
- HashCode和hashMap hashTable
- HashCode和hashMap hashTable
- hashmap, treemap, hashtable, hashcode 的使用和探讨
- Hashset、Hashmap、Hashtable与hashcode()和equals()的密切关系
- == 和 equals,equals 与 hashcode,HashSet 和 HashMap,HashMap 和 Hashtable
- Arraylist和linkedlist的区别,hashmap和hashtable的区别,hashmap和hashset的相同与不同,hashcode的用法
- HashMap和HashSet、hashcode
- Hashtable和HashMap对象
- HashMap和Hashtable区别
- Hashtable和HashMap类
- Hashtable和HashMap
- Hashtable和HashMap
- Hashtable和HashMap
- hashMap和HashTable
- HashMap 和 HashTable
- Java Hashmap 和 Hashtable
- hashtable 和hashmap比较
- HTTP协议详解
- Opencv图像识别从零到精通(12)-----滑动条控制直方图、对比度、亮度、图像相加
- expandListView悬停效果
- R 数据分析
- Greenplum对新增节点扩展Segments实战
- HashCode和hashMap hashTable
- JVM启动参数的类别及使用
- C++分割字符串小结
- 大数 乘法 C语言
- 这么多开源框架,该用哪个好?
- 视频人数统计(opencv)
- Java资料篇
- 现在市面上网络监控系统分析
- MySQL----MySQLi 类封装