摘要: HashMap 首先根据key计算hash值,(hashcode右移16位与hashcode异或计算)用hash值不用hashcode值是因为hashcode 32位 太大不方便计算,并且得到答案的概率不均衡。 第二步 是根据hash值去计算数组下标 ((n-1)&hash),用这个不用hash值取 阅读全文
posted @ 2020-01-15 17:23 乌兹_永远滴神 阅读(137) 评论(0) 推荐(0) 编辑
摘要: java中常说的堆和栈,分别是什么数据结构;另外,为什么要分为堆和栈来存储数据 栈是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。 堆是一种经过排序的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树 阅读全文
posted @ 2020-01-15 14:10 乌兹_永远滴神 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 1、ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的)。 2、因为地址连续, ArrayList要移动数据,所以插入和删除操作效率比较低。 3、LinkedList基于链表的数据结构,地址是任意的,所以在开辟内存空间的时候不需 阅读全文
posted @ 2020-01-15 14:08 乌兹_永远滴神 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。 2、抽象类要被子类继承,接口要被类实现。 3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现 4、接口里定义的变量只能是公共的静态的常量,抽象类中的 阅读全文
posted @ 2020-01-15 14:04 乌兹_永远滴神 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 1、队列先进先出,栈先进后出。 2、对插入和删除操作的"限定"不同。 栈是限定只能在表的一端进行插入和删除操作的线性表。 队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。 3、遍历数据速度不同。 栈只能从头部取数据,也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得 阅读全文
posted @ 2020-01-15 14:03 乌兹_永远滴神 阅读(454) 评论(0) 推荐(0) 编辑