知识点总结 - JAVA基础篇

1. Object都有哪些方法

wait、notify、notifyAll、toString、hashCode、equels、getClass、clone、finalize

2. 两个对象equels相等,hashCode是否相等,为什么?
  • equels相等,hashcode一定相等。
  • JavaDoc描述了在重写equels方法的时候一定要重写hashcode,且必须遵循自反性、对称性、传播性、唯一性。
  • 在hashmap中,同时用了equels和hashcode做了判断,如果我们在重写equels的时候没有让hashcode相等的话,对象保存到hashmap中就会有问题
3. JAVA集合
图片来自网络.png
4. HashMap原理

HashMap采用散列表的存储结构。主干是Entry数组,每个数组元素又是一个链表结构。JDK1.8对结构进行了优化,当链表元素大于8的时候,会变成红黑树结构;又当链表元素小于6的时候,重新变回链表。

  • HashMap会根据当前Entry数组使用情况进行自动扩容,默认扩容因子为0.75
  • 扩容为当前的两倍大小,扩容之后要对所有元素进行rehash操作
  • Hash算法为 hash = key & (length - 1)
  • 解决hash冲突的方法为链地址法
  • 当hash冲突时,元素插入的方式,JDK1.7为头插法,JDK1.8为尾插法。避免在rehash的过程形成链环
5. ConcurrentHashMap原理
  • JDK1.7采用segment数组+entry数组+链表结构
  • JDK1.8采用entry数组+链表+红黑树结构
  • 在put和get的时候使用了Synchronized关键字保证线程安全

你可能感兴趣的:(知识点总结 - JAVA基础篇)