File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -40,6 +40,8 @@ Github项目主页:https://github.com/NotFound9/interviewGuide
4040 - [ 8.Java中的访问控制符有哪些?] ( docs/JavaBasic.md#Java中的访问控制符有哪些? )
4141 - [ 9.Java的构造器有哪些特点?] ( docs/JavaBasic.md#Java的构造器有哪些特点? )
4242 - [ 10.Java中的内部类是怎么样的?] ( docs/JavaBasic.md#Java中的内部类是怎么样的? )
43+ - [ 11.Java中的注解是什么?] ( docs/JavaBasic.md#Java中的注解是什么? )
44+ - [ 12.为什么hashCode()和equal()方法要一起重写?] ( docs/JavaBasic.md#为什么hashCode()和equal()方法要一起重写? )
4345 * 容器
4446 - [ ArrayList和LinkedList] ( docs/ArrayList.md )
4547 - [ 1.ArrayList与LinkedList的区别是什么?] ( docs/ArrayList.md#ArrayList与LinkedList的区别是什么? )
Original file line number Diff line number Diff line change 2323
2424#### [ 11.Java中的注解是什么?] ( #Java中的注解是什么 )
2525
26+ #### [ 12.为什么hashCode()和equal()方法要一起重写?] ( #为什么hashCode()和equal()方法要一起重写? )
2627
2728
2829### Java中的多态是什么?
@@ -366,6 +367,7 @@ class2 is class com.test.Son
366367
367368PS:无论是使用哪种方式来获取类关联的Class对象,类都是只会加载一次,如果获取Class对象时,不会重复加载类。
368369
370+ ### 为什么hashCode()和equal()方法要一起重写?
369371#### hashCode()和equal()方法
370372
371373可以看到Obejct类中的源码如下,可以看到equals()方法的默认实现是判断两个对象的内存地址是否相同来决定返回结果。
@@ -398,8 +400,6 @@ PS:无论是使用哪种方式来获取类关联的Class对象,类都是只会
398400 所以hashCode不相等可以作为两个对象不相等的快速判断条件。
399401
400402 在往HashMap中添加一个键值对时,计算得到数组下标后,会遍历数组下标下存储的链表中,拿key的hashCode与每个节点的hashCode进行比较,相等时,才调用equal()方法进行继续调用,节约时间。(在一些类的equal()方法的自定义实现中也会对hashCode进行判断)。
401-
402- #### 为什么如果要重写,hashCode()和equal()方法要一起重写?
403403
404404##### 假如只重写hashCode()方法(结果:HashMap无法保证去重)
405405
You can’t perform that action at this time.
0 commit comments