|
|
|
|
发布时间:2008-05-24 13:46:01
浏览次数:129
类别:Java技术
|
|
上一讲我们介绍了红黑树,下面介绍一下哈希表。
哈希表简单来说就是通过某种算法,直接将元素存储到内存的某一位置上。所以这里就有一个问题,如果两个元素恰好被分配到了同一个位置上,那么应该怎么办?这种问题被称为哈希冲突,哈希表必须提供哈希冲突的解决方案。Java中哈希冲突的解决方案是这样的,如果两个元素被分配到了同一个位置上,那么就让这两个元素建立一个链表,然后以链表的形式存储在这个位置上。
如果我们想找到前面存储到哈希表中的元素,应该如何知道它被分配到哪个位置上呢?这就要求,同一个元素每次被分配到哈希表中的位置应该是固定的。这样才有可能再次将它找回。元素的存储位置就是通过Object对象中定义的hashCode()方法决定的,所以hashCode()方法必须要针对同一对象返回固定的值,而针对不同的对象尽可能返回不同的值。但我们也知道,由于有可能将两个不同的元素分配到同一个位置上,当在一个位置上有多个元素时,我们怎么知道哪一个是我们要的元素呢?这时候就要依靠Object的equals方法了。如果有多个元素时,就一个一个比较,看哪一个元素是我们要的元素。
Java中使用到哈希表的集合有HashMap和HashSet等,它的优点是查找快速。 |
|
| 在线咨询 |
武老师: |
代老师: |
| |
| 电话咨询 |
报名热线:010-62320869
|
| 电子邮件 |
Email:consult@sodii.com
|
|
|
|
| 乘车路线 |
| 1、乘坐47、386、836、753、740、983、656、944、运通109、运通113等,在学院桥东下车,路北白色大楼即是科群大厦; |
| 2、乘坐375、438、386、743、748、398、392等,到北航下车,向北步行200米至学院桥,学院桥东北角即是科群大厦; |
| 3、西站下车,可直接乘坐47路到学院桥东;北京站下车,坐2号线地铁至东直门,换乘375在北航下车 |
|
|