# Java 集合 为什么重写 HashCode 和 equals
>Object 源码 中的 HashCode 和 equals方法:
>
>```
>public native int hashCode();
>
>public boolean equals(Object obj) {
> return (this == obj);
> }
>```
>
>hashCode native指的是 调用的是本地方法,如果子类补充下默认调用的是本地方法。Java平台有个用户和本地C代码进行互操作的API,称为Java Native Interface (Java本地接口)
>
>在 HashSet 和 HashMap 中 所存放的元素都是不重复的 , 因此应该判断 元素是否相同,判断条件:
>
>1. HashCode 值是否相同
>2. 元素的值是否相同
>
>为了让相同的元素类的HashCode值相同,我们应该重写HashCode方法。
>
>为了判断元素是否相同 ,我们应该重写 equals 方法,在其中比较元素的值。