散列码,HashCode的理解与应用
来源:互联网 发布:迪杰斯特拉算法图解 编辑:程序博客网 时间:2024/06/15 06:10
转自http://bbs.csdn.net/topics/90176996 maquan的回答
我的理解是:“散列码”就是用来把一堆对象散到各自的队列里去的一种标识码。
举个形象一点的例子,一年有 365 天,从 1 编号到 365,下面我定义一种编码方法,每个人按照他生日那天的编号作为他的标识码,这样,一群人每个人就会有一个标识码。
这个标识码有什么用呢?好,下面我说,请所有单号的人站到一起,所有双号的人站在一起。此后,当我要找一个人的时候,如果知道他的编号是单号,那我只需要到前面一堆人里去找,查找效率提高了一倍。
如果我说,请编号能被 16 整除的人站到一起,被 16 除余 1 的人站到一起,被 16 除余 2 的人站到一起…… 此后,当我要找一个人的时候,查找效率就会提高到 16 倍。
这就是散列码。所以,一个好的散列码算法,配合一个适当的存储机制,就能够实现高效的存储管理。
那么,不好的散列码算法会有多糟糕呢?比如,hashCode() 返回一个常量,那么,无论什么存储机制都会退化,所有的人都站在一堆里,查找效率无法提高。不过,也就只是影响效率,不会影响“正确性”,因为散列码的本性决定了,所有的算法都不应该假设两个不同的对象必须有不同的散列码。
关于散列码的使用请看 HashMap,HashSet
0 0
- 散列码,HashCode的理解与应用
- HashCode的理解与应用
- HashCode的定义与应用
- hashCode()与equals()方法的理解
- 对hashCode的理解
- 对HashCode的理解
- hashCode的理解
- 深入理解 equal 与 hashcode
- HashCode 深入理解 关键是与collection的关系
- java 中hashcode的理解
- Java中hashcode的理解
- Java中hashcode的理解
- Java中hashcode的理解
- equals 和 hashcode 的理解
- Java中hashcode的理解
- 我对于hashcode的理解
- hashCode与equals源码分析与应用
- equal() 与hashcode()之我理解
- 黑马程序员----Java基础第7天(抽象类,继承,final,接口)
- 【ShawnZhang】带你看数据结构——第十一课:哈夫曼树
- Context-----Activity,Application之间的交流使者
- Android 和 js 相互调用
- linux使用FIO测试磁盘的iops
- 散列码,HashCode的理解与应用
- Android 中的DisplayMetrics类的用法
- git fetch后,查看更改的内容
- 编程之美-数组循环移位
- ThreadLocal详解
- c与c++中enum和struct定义的区别
- Unity 使用 Protobuf-net
- Feature scaling
- Service--服务