2 << 3(左移3位相当于乘以2的3次方,右移3位相当于除以2的3次方)。 补充:我们为编写的类重写hashCode方法时,可能会看到如下所示的代码,其实我们不太理解为什么要使用这样的乘法运算来产生哈希码(散列码),而且为什么这个数是个素数,为什么通常选择31这个数?前两个问题的答案你可以自己百度 ...
分类:
其他好文 时间:
2018-04-21 15:23:01
阅读次数:
173
一.前言 1.1 符号 比较的对象内存地址,也就是两个引用指向的地址,相同即指向同一个对象则返回true。Object中的 方法默认使用的是 方法比较两个对象: 1.2散列数据结构中键类的 方法必须重载,否则这些数据结构便不能正确处理键; 1.3重载 原则 重载的 方法需要满足一下条件: 1. 自反 ...
分类:
其他好文 时间:
2018-04-21 14:32:35
阅读次数:
171
转自:https://blog.csdn.net/al_assad/article/details/52989525 散列和散列码 ※正确的equals方法应该满足的的条件: ①自反性:x.equals(x) 一定返回true; ②对称性:y.euqlas(x)为true,那么x.equals(y) ...
分类:
编程语言 时间:
2018-04-19 15:05:46
阅读次数:
179
散列的价值在于速度。我们使用数组来保存键的信息,这个信息并不是键本身,而是通过键对象生成一个数字(散列码),作为数组下标。由于数组的容量是固定的,而散列容器的大小是可变的,所以不同的键可以产生相同的数组下标(散列码)。也就是说,可能会有冲突(当然也有特例,比如EnumMap和EnumSet)。所以, ...
分类:
编程语言 时间:
2018-03-12 18:39:03
阅读次数:
234
堆组织表就不说了,其索引中记录了记录所在位置的rowid,查找的时候先找索引,然后再根据索引rowid找到块中的行数据索引组织表,其行数据以索引形式存放,因此找到索引,就等于找到了行数据。 -- 堆组织表的数据是散放的,索引和表的数据是分离的索引组织表的索引和数据是在一起的 -- -- 堆组织表(h ...
分类:
其他好文 时间:
2018-02-13 13:36:19
阅读次数:
244
首先我们来了解一下hashcode,什么是hashcode?有什么作用? hashcode其实就是散列码,使用hashcode使用高效率的哈希算法来定位查找对象! 我们在使用容器来存储数据的时候会计算一串散列码,然后将数据放入容器。 如:String s =“java”,那么计算机会先计算散列码,然 ...
分类:
其他好文 时间:
2018-02-07 14:38:48
阅读次数:
165
一、简述 散列是一种数据访问技术,所有的数据项均有散列码与之关联。 散列码可在任何时候通过散列函数计算得到,通常为数据索引。 二、散列构造 ①直接定址法:取关键字本身或其线性函数计算结果作为散列码。 ②数字分析法:取关键字中分布较均匀的若干位作为散列码。 ③折叠法:根据表长取关键字拆分为若干等长部分 ...
分类:
其他好文 时间:
2018-01-29 18:23:52
阅读次数:
179
一图胜过千万言!希望本文能帮助童鞋们回顾已经知道的那些知识。 下图显示了如下代码运行的过程: String s = "abcd"; s = s.concat("ef"); HashCode(哈希编码,散列码)是设计了用来提高性能的. equals()与hashCode()方法之间的关系可以概括为: ...
分类:
编程语言 时间:
2017-12-20 13:41:27
阅读次数:
211
对集合的了解 第十一周的JAVA学习依然如期而至,这周我们走进了对集合的学习,JAVA集合里面的很多内容与数据结构里面的内容联系极为紧密,我们在学习了数据结构中的线性结构:线性表,栈,队列和非线性结构:树与图之后学习JAVA的集合,感觉轻松了很多,可能这就是所谓的学科与学科之间的相关性吧! JAVA ...
分类:
编程语言 时间:
2017-11-05 17:56:08
阅读次数:
232
Object条约规定:相等的对象必须具有相同的散列码hashCode 假如将只覆盖equals方法,没覆盖hashCode方法的类用于HashMap中,将会出现问题,会出现get()方法返回时不是同一个对象 这就相当于将对象put进一个散列桶,却在另一个散列桶get这个对象,就算刚好是put和get ...
分类:
其他好文 时间:
2017-10-18 20:47:34
阅读次数:
137